插入排序(InsertSort)
来源:互联网 发布:关闭windows数字签名 编辑:程序博客网 时间:2024/05/19 14:35
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法。
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。
直接插入排序的算法思路:
(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)。是稳定的排序方法。
0 0
- 插入排序(InsertSort)
- 插入排序(InsertSort)
- 插入排序(InsertSort)
- 插入排序算法(InsertSort)
- 插入排序(insertSort.cpp)
- 插入排序之直接插入(InsertSort)
- 内部排序之插入排序(InsertSort)
- 插入排序法(InsertSort)c++实现
- 插入排序InsertSort
- insertSort - 插入排序
- 插入排序 InsertSort
- 插入排序 InsertSort
- 插入排序InsertSort
- 插入排序-InsertSort
- java insertsort 插入排序
- 插入排序-insertsort
- InsertSort 插入排序算法
- 数据结构-插入排序InsertSort
- Ubantu(Linux)下安装Eclipse并配置 PyDev
- HDU3090 Go Home
- Zend Studio 安装+破解
- 字符和字符串
- poj 3628 Silver Cow Party (spfa)
- 插入排序(InsertSort)
- 最近点对
- 3D游戏《龙心传奇Dragona》全套完整源代码
- Scala隐式转换
- access提示"以独占方式打开或没有权限"的解决方法
- ceph存储 Linux远程操作(rcp/rsh)命令实战
- [Win32] UAC用户账户控制(提权+降权)
- 开始刷leetcode day72: Binary Tree Preorder Traversal
- 根据滑动距离图片做缩放