存储过程根据参数排序_算法导论-9大排序算法-插入排序

8b9adc8e3772081c9060ca46ee340643.png

之前参照《算法导论_原书第3版_CHS》中伪代码,用C语言实现了9大排序算法。并采用文字和图例的形式,描述了各排序算法的实现过程。现分享给大家。代码实现后,未做优化。对于十大排序算法的性能测试,本人当时打算采用100,10000,1000000,100000000个随机数,测得耗用时间,然后在Execl/Origin中生成图表,即可得到算法的性能对比。但这个工作没有进行,有兴趣的人可以自己进行。

9大排序算法包括:

1.插入排序

2.堆排序

3.归并排序

4.基数排序

5.计数排序

6.快速排序

7.冒泡排序

8.随机化快速排序

9.桶排序

以下为插入排序:

ef156742870722befdbb021c4c8af970.png

d8a7ca3bb7ea9749dc8a5b11fd83707e.png

086c85788712e7f69540fa2aece00357.png

2ce0f513a43c29a52c5e0cd04658bea7.png

8c71b216f114cc38584fc81a83c4e95f.png

e1e82bb730afb8e0cff160aad15e064e.png

74cc8127895239409846b5c385fff21b.png

d89ca96b006edd48cd252c4e7c7ecd7c.png

二、源代码

#include <stdio.h> /*测试时需要使用printf()*/

#include <stdlib.h> /*动态内存申请时需要调用malloc()*/

#include <time.h> /*产生随机数时需要调用time()*/

#include <math.h> /*求解次方时需调用pow()*/

#include <string.h> /*复制内存元素时需调用memcpy()*/

/****************************************************************

函数名称: InsertSort

输入参数: Array:待排序数组

ArrayLength:数组长度

输出参数: 无

函数功能: 对数组进行升序排列,结果仍保存在该数组中

时间复杂度: c.n.n

注意事项: 例如:数组长度为10,若要对数组进行全部排序,则ArrayLength=10

****************************************************************/

void InsertingSort(int *Array,int ArrayLength) /*插入排序-已测试通过*/

{

int i,j; /*j用于for循环,i为数组辅助下标*/

int temp; /*用于数据交换的临时存储空间*/

for(j=1;j<=ArrayLength;j++) /*遍历所有数组元素,for()内部为核心算法*/

{

temp=Array[j]; /*暂时保存Array[j]的值*/

i=j-1; /*j前面一个元素的下标*/

while(i>=0&&Array[i]>temp) /*若j前面一个元素j-1的值更大,则交换,之后再比较j-1和j-2的值,依次类推,直到i=0*/

{

Array[i+1]=Array[i];

Array[i]=temp;

i=i-1;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值