C语言之直接插入排序
Posted 遇见杉凡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言之直接插入排序相关的知识,希望对你有一定的参考价值。
1概念
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。
2基本思想
假设需要排序的元素存放在R[1...n]中,初始时,R[1]自成一个有序区域,无序区域为R[2...n],从i=2起至i=n为止,依次将R[i]插入到当前有序区域R[1...i-1]中,生成包含n个元素的有序区。
首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置j(1≤j≤i-1);然后将R[j...i-1]中的记录均后移一个位置,腾出j位置上的空间插入R[i]。
3核心代码
void insert_sort(int data[], int size) {
int i, j, temp;
// 遍历size-1次
for (int i = 1; i < size; i++) {
// 取出当前位置i需要遍历比较的元素
temp = data[i];
// 从数组下标i-1至0逆向开始遍历比较
for (j = i-1; j >=0 && temp < data[j]; j--) {
/* 若前面取出的元素小于当前遍历的元素
将当前元素位置向后移动一位
*/
data[j+1] = data[j];
}
/* 当无元素移动时,取出的元素放回下标为i的位置
当有元素移动时,取出的元素放置于前面腾出的j位置,此时应该是j+1
*/
data[j+1] = temp;
}
}
4验证结果
以上是关于C语言之直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章