码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序与希尔排序的

时间:2017-05-15 22:21:27      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:include

#include"iostream"

using namespace std;

int insertsort(int a[],int size){//直接插入排序


for (int i = 0; i < size - 1; i++){

int temp = a[i+1];//保留要插入的点

int k = i;//k为要插入的位置

if (temp<a[k]){

while (k >= 0 && temp < a[k]){

a[k + 1] = a[k];

k--;

}

a[k + 1] = temp;

}

}

return 0;

}


int ShellSort(int a[],int size){//xi

int gap = size / 3 + 1;

do{

    gap = gap / 3 + 1;//划步长

    for (int i = 0; i<gap; i++){//分组


for (int j =i+gap ; j<size; j=j+gap){//该插入的数

                        //如果要插入的数比前面小,就找找该插入哪个位置,否则不变。

if (a[j] < a[j - gap]){//这时候要插入的数为a[j];

int temp = a[j];//先保留a[j]的值

int k = j - gap;//保留要插入的位置

while (k >= 0 && a[k] > temp){

                                    //只要比较的位置不越界,且小于要插入的数。

a[k+gap] = a[k];//不停的将比较过的后移。

k = k - gap;

}

a[k+gap] = temp;//最后将要插入的值放入要插入的位置k

}

}

    }

          } while (gap>1);//采用do while这种形式是为了把gap=1;只操作一次


return 0;

}


int main(){

int a[5] = { 1,5,6,2,7 };

insertsort(a, 5);

for (int i = 0; i < 5; i++){

cout << a[i] << " ";

}

ShellSort(a, 5);

for (int i = 0; i < 5; i++){

cout << a[i] << " ";

}

system("pause");

return 0;

}


插入排序与希尔排序的

标签:include

原文地址:http://ji123.blog.51cto.com/11333309/1925940

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!