希尔排序

来源:互联网 发布:导入isp数据库 编辑:程序博客网 时间:2024/04/30 17:34

程序代码:

#include"stdio.h"#include"stdlib.h"#include<iostream>using namespace std;void swap(int&a, int&b){    int c;    c = a;    a = b;    b = c;}//希尔排序法,就是将数据分组后进行排序,分组后可用直接插入排序、选择排序、冒泡排序等。void shell_sort(int a[], int n){    printf("the unsort data is:");    for (int i = 0; i < n; i++)        printf("%d ", a[i]);    cout << endl;    int gap = n / 2;    while (gap >=1)    {        //根据gap分组后,每一组的情况利用冒泡排序法        for (int i = 0; i < gap; i++)        {            for (int j = 0; j < n -gap; j += gap)//每一组要进行多少趟冒泡排序            {                for (int k = i; k < n - gap*(1+j); k += gap)//每一次冒泡排序的情况                {                    if (a[k]>a[k + gap])                        swap(a[k], a[k + gap]);                }            }        }        printf("the th sort data is:");        for (int i = 0; i < n; i++)            printf("%d ", a[i]);        cout << endl;        gap /= 2;    }    printf("the sort data is:");    for (int i = 0; i < n; i++)        printf("%d ", a[i]);    cout << endl;}int main(){    int a[10] = { 3, 1, 9, 8, 5, 4, 7, 2, 6, 10 };    shell_sort(a, 10);    system("pause");    return 0;}

实验结果:
这里写图片描述

0 0