博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入排序与希尔排序的
阅读量:6421 次
发布时间:2019-06-23

本文共 1045 字,大约阅读时间需要 3 分钟。

#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;

}

本文转自 神迹难觅 51CTO博客,原文链接:http://blog.51cto.com/ji123/1925940,如需转载请自行联系原作者
你可能感兴趣的文章
PS5选区及选区工具
查看>>
理解MapReduce哲学
查看>>
NOPcommerce研究
查看>>
安装Office2007时出现1706错误的解决方案
查看>>
linux用dd测试磁盘速度
查看>>
HDU 4856 (状态压缩DP+TSP)
查看>>
来自褪墨:个人回顾与展望/2011年的回顾和对2012年的计划
查看>>
hadoop实现购物商城推荐系统
查看>>
SQL Server技术内幕笔记合集
查看>>
[裴礼文数学分析中的典型问题与方法习题参考解答]4.3.3
查看>>
Linux dkpg命令
查看>>
SplashScreenDemo
查看>>
Android Studio常用快捷键
查看>>
Mysql数据库主从及主主复制配置演示
查看>>
加密技术和支付密码
查看>>
Delphi开发Windows服务程序
查看>>
【转载、推荐】不要自称是程序员,我十多年的 IT 职场总结
查看>>
Atitit.收银系统模块架构attilax 总结
查看>>
PHP 获取图片中的器材信息
查看>>
js阻止表单重复提交
查看>>