插入排序
2015-08-13 16:41
190 查看
插入排序的思想便是“逐个比较”。
1 文字表述:
2 伪码表示:
3 算法实现:
1 文字表述:
1)设置一个循环,从第二个数字开始(索引为1)不断与前面的数字相比。 2)每次循环开始时作为比较的数的索引为j,设置temp为其值。(因为比如将”8“赋值到”7“的位置时,如果不将”7“保存起来,那么便丢失了这个数字。) 3)取得j的前一位i。 4)只要i仍在数组中,并且索引为i处的值大于temp,就将i后一位的值设为i处的值,同时将i减1。 5)在i不在数组中或i处的值不必temp大时结束第四部的循环,然后将i后一位的值设置为temp。
2 伪码表示:
INSERTION-SORT(A) for j = 2 to A.length // 代价c1,次数n temp=A[j]; // 代价c2,次数n-1 // 将A[j]插入到已排序的A[1..j-1] // 代价0,次数n-1 i=j-1; // 代价c4,次数n-1 while i>0 and A[i]>temp // 代价c5 A[i+1]=A[i]; // 代价c6 i=i-1; // 代价c7 A[i+1]=temp; // 代价c8,次数n-1
3 算法实现:
#include<stdio.h> void insort(int a[],int n); int main(){ int array[5],num; printf("数组长度:\n"); scanf("%d",&num); printf("pls input\n"); for(int i=0;i<num;i++){ scanf("%d",&array[i]);} insort(array,num); for(int i=0;i<num;i++) printf("%d",array[i]); return 0; } void insort(int a[],int n){ for(int j=1;j<n;j++){ int key=a[j]; int i=j-1; while(i>0&&a[i]>key){ a[i+1]=a[i]; i=i-1; } a[i+1]=key; } }
相关文章推荐
- hdu5389(DP)
- vmware虚拟机Windows 2003上网问题
- 第8章 用户模式下的线程同步(3)_Slim读写锁(SRWLock)
- 用JS改变的元素CSS样式
- Clustering Tips
- 学密码学一定得学程序
- 【bzoj1003】【ZJOI2006】【物流运输】【dp+最短路】
- ffmpeg生成带关键帧头信息的flv文件(一)
- pat(A) 1062. Talent and Virtue(结构体排序)
- iOS 获取本地设备相关信息,如:IP地址
- OC思维导图之NSString&NSMutableString
- 124. Binary Tree Maximum Path Sum
- java考核完的心得
- 数据库基本sql语句
- Android中BaseAdapter的理解
- 【leetcode】Rectangle Area【java】
- 推荐:Android酷炫实用的开源框架(UI框架)
- 利用存储过程动态创建表格
- [置顶] android源码编译apk集成第三方so库
- linux有用的一些yum源