插入排序(InsertSort)
2015-07-20 10:39
281 查看
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法。
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。
直接插入排序的算法思路:
(1) 设置监视哨r[0],将待插入纪录的值赋值给r[0];
(2) 设置开始查找的位置j;
(3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止;
(4) 将r[0]插入r[j+1]的位置上。
如图:
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。
直接插入排序的算法思路:
(1) 设置监视哨r[0],将待插入纪录的值赋值给r[0];
(2) 设置开始查找的位置j;
(3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止;
(4) 将r[0]插入r[j+1]的位置上。
如图:
这里写代码片 #include<stdio.h> #include<stdlib.h> void insertSort(int* arr, int len); void array_show(int* arr, int len); int main(int argc, char* argv[]) { int arr[10] = {4,3,8,5,2,1,6,0,7,9}; array_show(arr, 10); insertSort(arr,10); putchar(10); array_show(arr, 10); system("pause"); return 0; } /* //1. void insertSort(int* arr, int len ) { for(int i=1;i<len;i++)//循环从第二个数组元素开始,因为arr[0]作为最初已排序部分 { int temp=arr[i];//temp标记为未排序第一个元素 int j=i-1; while (j>=0 && arr[j]>temp)//将temp与已排序元素从小到大比较,寻找temp应插入的位置 { arr[j+1]=arr[j]; j--; } arr[j+1]=temp; } } */ void array_show(int* arr, int len) { int i ; for(i = 0; i != len; i ++) { printf("%d ", arr[i]); } } //2. void insertSort(int a[], int n) { int i=0,j=0; for(i=1; i<n; i++) { int temp=a[i]; for(j=i-1; j>=0 && temp<a[j]; j--) { a[j+1]=a[j]; } a[j+1]=temp; } }
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。
相关文章推荐
- 3D游戏《龙心传奇Dragona》全套完整源代码
- POJ 2677 Tour
- 最近点对
- poj 3628 Silver Cow Party (spfa)
- 清除HTML所有标签
- STL之map
- 在Python的Django框架中包装视图函数
- trace walk DEMO
- 勿忘初心,不断进步
- Ubantu(Linux)下安装Eclipse并配置 PyDev
- VS2013加上注释的快捷键,以及批量注释的快捷键
- .net中关于事物的几种简单用法
- 关于Unity3d发布后Scene场景的设置(代码控制)
- Mysql导出逗号分隔的csv文件
- 字符串相关函数
- Persist Security Info=False是干什么的
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- hdu4003 分类: hdu 2015-07...
- 使用命令启动android sdk manager
- 数据库方面的知识