C语言——直接插入排序
来源:互联网 发布:网络上赌博输钱怎么办 编辑:程序博客网 时间:2024/05/17 01:37
什么是直接插入排序?
直接插入排序即是在要排序的数组中,假设前n-1(n>=2)个数已经是排好序的,现在要把第n个数插入到前n个已经排好序的数组中,使得这n个数也
变成有序的,如此反复循环,使得要排序的数组中的最后一个元素也排好序,
我们可以先假设第一个数是排好序的,然后第二个数和第一个数进行比较,如果第二个数比第一个数大,那么说明前两个数排好序,无需做调整,如果
第二个数比第一个数小,那么就把第一个数向后移,将第二个数放在第一个数的位置上,抽象出来就是用a[i]和a[i-1]进行比较,如果a[i]>a[i-1],那么就说明
前i个数是已经排好序的,如果a[i]<a[i-1],就让j=i-1,temp=a[i],然后一边将数据a[j]向后移动,一边向前搜索,直到找到a[j]<a[i]时停止,并将temp放到a[j+1]处
即可。
代码如下:
1 #include <stdio.h> 2 3 4 InsertSort(int array[], int num) 5 { 6 int i = 0; 7 int temp = 0; 8 int j = 0; 9 10 11 12 for(i=1; i<num; i++) 13 { 14 temp = array[i]; //将每次要排序的元素保存到temp中 15 j= i-1; 16 17 while( j>=0 && (temp<array[j]) ) 18 { 19 array[j+1] = array[j]; 20 j--; //将比temp小的元素依次向后移动一个位置 21 } 22 23 array[j+1] = temp; //空出来的元素就是temp要插入的位置 1 24 } 25 } 26 27 void main() 28 { 29 int a[]={11,21,9,32,8,1,6,3,4,7,}; 30 int len = sizeof(a) / sizeof(a[0]); 31 int i; 32 33 InsertSort(a,len); 34 35 for(i=0; i<len; i++) 36 { 37 38 printf("%3d",a[i]); 39 } 40 printf("\n"); 41 42 }
[lalala@jjjjj ~]$ ./a.out old a[]= 11 21 9 32 8 1 6 3 4 7new a[]= 1 3 4 6 7 8 9 11 21 32
yo !peace!
阅读全文
0 0
- C语言——直接插入排序
- C语言实现直接插入排序—从小到大排
- C语言 直接插入排序
- C语言常用排序——直接插入,冒泡,选择,希尔,快速,堆排序
- C语言实现直接插入排序
- 直接插入排序(C语言实现)
- 直接插入排序 c语言描述
- 直接插入排序C语言实现
- C语言实现直接插入排序
- 直接插入排序算法--c语言实现
- 【算法】直接插入排序C语言实现
- C语言实现直接插入排序
- 【C语言经典实例】-直接插入排序
- 数据结构 C语言实现直接插入排序
- 直接插入排序的c语言实现
- C语言实现直接插入排序
- C 语言-直接插入排序
- 算法 直接插入排序 c语言
- swift 3.0 打印宏设置
- 组合计数问题
- AJAX-实现页面内跳转实例
- tablayout结合着viewPager来使用
- 33. Search in Rotated Sorted Array
- C语言——直接插入排序
- Win10 Hyper-V 搭建虚拟机 桥接模式
- divmod(a,b)函数
- python 读文档
- 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
- 自动轮播
- linux java安装
- 代码可视化工具python Tutor
- HDU 4544 湫湫系列故事——消灭兔子