根据the c program 一书中源代码来测试shell排序法

来源:互联网 发布:邢台学院教务处网络 编辑:程序博客网 时间:2024/05/16 15:51

原理:shell排序的思想是根据步长由长到短分组,进行排序,直到步长为1为止,属于插入排序的一种。

关于动画演示可以查看点击打开链接

#include<iostream>using namespace std;int main(){void shellsort(int a[], int n);int a[10] ={9,3,4,5,8,1,6,2,7,0};shellsort(a, 10);for (int i=0; i<=9;i++){cout<<a[i]<<' ';}cout<<endl;return 0;}void shellsort(int v[], int n){int gap, i , j, temp;for (gap = n/2; gap > 0; gap /= 2){for (i=gap; i < n; i++){for(j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap){temp=v[j];v[j]=v[j+gap];v[j+gap]=temp;}}}}// /* shellsort:  sort v[0]...v[n-1] into increasing order */// void shellsort(int v[], int n)// {// int gap, i, j, temp;// for (gap = n/2; gap > 0; gap /= 2)// {// for (i = gap; i < n; i++)// {// for (j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap) // {// temp = v[j];// v[j] = v[j+gap];// v[j+gap] = temp;// }// }// }//}



0 0