插入排序及插入排序改进
来源:互联网 发布:什么叫网站域名 编辑:程序博客网 时间:2024/05/28 06:04
插入排序,在算法导论里面的介绍对数组 A[ ] = { 5, 2, 4,6,1,3 } 进行插入排序,排序的过程如下:
排序过程
a-->b-->c-->d-->e-->f
非降序插入排序
伪代码
for j = 2 to A.lengthkey = A[j]// Insert A[j] into the sorted sequence A[1...j-1](这里是注释)i = j - 1while i > 0 and A[i] > keyA[i + 1] = A[i]i = i - 1A[i + 1] = key
C语言代码
int insert_sort(int A[], int size){int i, j, key;if (NULL == A || size <=1 ){printf("File:[%s] Line:[%s] illegal array\n", __FILE__, __LINE__);return -1;}for(j=1; j<size; ++j){key = A[j];// inser A[j] to the sorted sequence A[1...j-1]i = j - 1;while (i >= 0 && A[i] > key){A[i+1] = A[i];i = i - 1;}A[i+1] = key;}return 0;}
非升序插入排序伪代码
for j = 2 to A.lengthkey = A[j]// Insert A[j] into the sorted sequence A[1...j-1](这里是注释)i = j - 1while i > 0 and A[i] < keyA[i + 1] = A[i]i = i - 1A[i + 1] = key
插入排序改进
二分插入排序
伪代码
for j = 2 to A.length key = A[j] // Insert A[j] into the sorted sequence A[1...j-1] i = j - 1 if A[i] > key k = binary_search()for i to kA[i + 1] = A[i] i = i - 1 A[i + 1] = keyC语言代码
#define INT_AVERAGE(A,B) ((A)&(B))+(((A)^(B))>>1)int insert_sort(int A[], int size){int i, j, key;int pos, k;if (NULL == A || size <=1 ){printf("File:[%s] Line:[%s] illegal array\n", __FILE__, __LINE__);return -1;}for(j=1; j<size; ++j){key = A[j];i = j - 1;if (A[i] > key){pos = interative_binary_search(A, key, 0, i);for (; i>=pos; --i)A[i+1] = A[i];}A[i+1] = key;}return 0;}int interative_binary_search(int A[], int v, int low, int high){int mid;while (low < high){mid = INT_AVERAGE(low, high);if (v > A[mid])low = mid + 1;elsehigh = mid - 1;}return low;}
参考:
[1] 算法导论
0 0
- 插入排序及插入排序改进
- 直接插入排序及改进
- 插入排序改进-折半插入排序
- 插入排序和插入排序的改进
- 插入排序改进之二分插入排序
- 排序算法(三)——插入排序及改进
- 排序算法(三)——插入排序及改进
- 排序算法(三)——插入排序及改进
- 改进的插入排序算法
- 排序算法之插入排序及其改进
- 插入排序的改进2:希尔排序
- 插入排序高效改进之希尔排序
- 二分法查找,插入法查找及冒泡排序的改进
- [java]插入排序及折半插入排序
- 直接插入排序:改进算法---折半插入排序
- 直接插入排序:改进算法---2路插入排序
- 2路插入排序-插入排序的改进
- 排序:插入排序以及其改进:二分法插入
- 常用数学公式的编程表达
- Android studio中Preview出现render problem问题
- 3875: [Ahoi2014]骑士游戏
- 数据转换及运算符
- Java之面向对象
- 插入排序及插入排序改进
- 学习Hadoop第三十三课(Hive自定义UDF)
- 爬虫:CSDN文章批量抓取以及导入WordPress
- 杨辉三角
- 75象棋(6)
- python文件操作
- 对称矩阵的判定
- 字符数目相同的子字符串的数目
- C语言实验——求一个3*3矩阵对角线元素之和