排序算法(2)-直接插入排序
2015-12-07 22:03
267 查看
直接插入排序就是在已排序的有序序列里插入一个新的记录仍然有序,其插入位置的确定就是将带插入的记录与有序中的记录依次比较找到合适位置并插入。
时间复杂度:n的平方
算法实现:
设置监视哨主要是防止数据后移时丢失
主函数:(注意:数组元素从下标1开始)
时间复杂度:n的平方
算法实现:
设置监视哨主要是防止数据后移时丢失
<span style="font-size:18px;">void InsertSort(int a[], int n) { int i, j; for (i = 2; i <= n; i++) {//数组下标从2开始,a[0]作为监视哨,a[1]一个数据无可比性 a[0] = a[i]; //给监视哨赋值 j = i - 1; //比较的元素 while (a[0]<a[j]) { a[j + 1] = a[j];//数据右移 j--; } a[j + 1] = a[0]; //在确定位置插入新的数 } }</span>
主函数:(注意:数组元素从下标1开始)
<span style="font-size:18px;">#include<stdio.h> #define N 100 void InsertSort(int a[], int n); main() { int n, i, t; int a ; printf("请输入你要排序的数组元素个数:"); scanf_s("%d", &n); printf("请输入你要排序的数组元素:"); for (i = 1; i <=n; i++) { scanf_s("%d", &a[i]); } InsertSort(a, n); for (t = 1; t <= n; t++) { printf("%5d", a[t]); } printf("\n"); getch(); }</span>
相关文章推荐
- homerHEVC代码阅读(23)——去方块滤波、SAO、熵编码的主要流程
- 黑马程序员——java基础之继承和多态
- CGI编程完全手册
- 彩票生成器--36选7(不重复)
- NAND: U-Boot BUG at mtdcore.c:20
- 忘记Orcale sys、system密码解决办法
- Linux常用命令大搜罗、大总结
- SQLite Expert Professional 打开加密数据库
- undefined和NUll的区别
- 六、CXF的使用
- copy拷贝构造函数
- mysql---linux篇
- MySQL忘记root密码后如何找回?
- touch 命令
- 以软件开始生命周期来说明不同的测试的使用情况
- 使用snv命令来更新项目
- UITextField用法
- cocos2d (ZORDER、setTag、单点触屏)
- 偏序关系中盖住关系的求取及格论中有补格的判定
- 迷宫建模