加文

在这个世界上取得成就的人,都努力去寻找他们想要的机会,如果找不到机会,他们便自己创造机会。 -- 萧伯纳
随笔 - 14, 文章 - 56, 评论 - 1, 引用 - 0
数据加载中……

希尔排序

 1 #include <iostream>
 2 using namespace std;
 3 void ShellSort(int a[],int n)
 4 {
 5     int temp;
 6     int dk = n;
 7     do                                                 //调整步长循环
 8     { 
 9         dk = dk/3+1;
10         for(int i=0; i<dk; i++)                        //对每一分组进行排序
11         {
12             for(int j=i+dk; j<n; j = j+dk)             //对指定分组进行直接插入排序
13             {
14                 for(int k=i;k<j;k=k+dk)                            // 寻找元素位置
15                 {
16                     if(a[j]<a[k])
17                     {
18                         temp = a[j];
19                         for(int h = j;h>k;h = h-dk)
20                             a[h] = a[h-dk];
21                         a[k] = temp;
22 
23                     }
24                 }
25             }
26         }
27     }while(dk>1);              
28 }
29 int main()
30 {
31     int a[10= {4,10,9,8,7,6,5,4,3,2}; 
32     ShellSort(a,10);
33     for(int l=0;l<10;l++)
34         cout<<a[l]<<"   ";
35     getchar();
36     return 0;
37 }

posted on 2011-10-25 02:55 chxzwj 阅读(126) 评论(0)  编辑 收藏 引用 所属分类: 常用算法


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理