希爾排序是什麼
希爾排序(shell)是對插入排序的一個改裝,它每次排序把序列的.元素按照某個增量分成幾個子序列,對這幾個子序列進行插入排序,然後不斷的縮小增量擴大每個子序列的元素數量,直到增量為一的時候子序列就和原先的待排列序列一樣了,此時只需要做少量的比較和移動就可以完成對序列的排序了.以下是小編為大家搜索整理的希爾排序是什麼,希望能給大家帶來幫助!更多精彩內容請持續關注我們應屆畢業生考試網!
[cpp] view plaincopy
#include ;
void Shell_Sort(int a[], int n)
{
int h,i,j,temp;
for (h=n/2; h>0; h=h/2)
{
for (i=h; i
{
temp = a[i];
for (j=i-h; j>=0 && temp < a[j]; j-=h)
{
a[j+h] = a[j];
}
a[j+h] = temp;
}
}
}
int main(void)
{
int arr[]={1,5,2,4,3,8,6,7,9};
int count=sizeof(arr)/sizeof(int);
Shell_Sort(arr,count);
int k;
for(k=0;k
{
printf("%d",arr[k]);
}
return 0;
}
PHP版本
[php] view plaincopy
$arr=array(1,5,2,4,3,8,6,7,9);
print "排序前 ";
print_r($arr);
echo "
";
$arr=shell_sort($arr);
print "排序後 ";
print_r($arr);
function shell_sort($array)
{
$count = count($array);
for ($h=intval($count/2); $h>0; $h=intval($h/2))
{
for ($i=$h; $i<$count; $i++)
{
$temp = $array[$i];
for ($j=$i-$h; $j>=0 && $temp < $array[$j]; $j-=$h)
{
$array[$j+$h] = $array[$j];
}
$array[$j+$h] = $temp;
}
}
return $array;
}
?>
-
C語言編程中的聯合體union入門學習教程詳解
聯合體(union)在C語言中是一個特殊的數據類型,能夠存儲不同類型的數據在同一個內存位置。可以定義一個聯合體使用許多成員,但只有一個部件可以包含在任何時候給定的值。聯合體會提供使用相同的存儲器位置供多用途的有效方式。定義聯合體要定義聯合體,必須使用unio...
-
計算機C語言考點大全
C語言是世界上最流行、使用最廣泛的高級程序設計語言之一。下面小編整理了計算機C語言考點大全,希望對大家有幫助!【考點1】C程序C語言程序結構有三種:順序結構,循環結構(三個循環結構),選擇結構(if和switch)【考點2】main函數每個C語言程序中main函數是有且只...
-
C語言與JAVA的區別
很多人不明白C語言與C++和JAVE之間的區別,為此,為大家收集整理了下面的內容,歡迎閲讀!C語言C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語...
-
測試C語言功力的幾個問題
在實際的VC++教學中,發現很少有真正精通了C語言編程的學員,一般都有或多或少概念不是完全清楚的問題,特別是一些需要豐富的實戰經驗才能體會和明白的問題,如字符串,指針,類型轉換,定義指向函數的指針類型,這也是導致學習VC++困難的一個原因。下面就來和小編一起看看測...