程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 希爾排序

希爾排序

編輯:關於C#
 

希爾排序(shell)是對插入排序的一個改裝,它每次排序把序列的元素按照某個增量分成幾個子序列,對這幾個子序列進行插入排序,然後不斷的縮小增量擴大每個子序列的元素數量,直到增量為一的時候子序列就和原先的待排列序列一樣了,此時只需要做少量的比較和移動就可以完成對序列的排序了.

#include <stdio.h>;

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<n; 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<count;k++)
{
printf("%d",arr[k]);
}
return 0;
}

 

PHP版本

<?php
$arr=array(1,5,2,4,3,8,6,7,9);
print "排序前 ";
print_r($arr);
echo "<br>";
$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;
}

?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved