排序专栏:插入排序
Posted 电脑小白路漫漫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序专栏:插入排序相关的知识,希望对你有一定的参考价值。
Hi大家新年好!
今天给大家推送一种排序方法,叫做插入排序!
具体是怎么实现的呢?
大家来看一下吧:
和冒泡排序法不同,插入排序法似乎更简单,不像冒泡法那样一个一个的去比较,在这里,插入排序先选择一个元素,然后让这个元素跟排在自己之前的其他元素进行比较,最后将他插入到最终位置。
比如我们现在有一组数:
8 2 5 4 6 9 1 3 7 0
第一个元素不用选,所以我们第一次先选第二个元素,让它与排在它之前的元素进行比较:
第一次:2 8 5 4 6 9 1 3 7 0
第二次:2 5 8 4 6 9 1 3 7 0
第三次:2 4 5 8 6 9 1 3 7 0
第四次:2 4 5 6 8 9 1 3 7 0
第五次:2 4 5 6 8 9 1 3 7 0
第六次:1 2 4 5 6 8 9 3 7 0
第七次:1 2 3 4 5 6 8 9 7 0
第八次:1 2 3 4 5 6 7 8 9 0
第九次:0 1 2 3 4 5 6 7 8 9
以上就是冒泡排序法的过程
现在让我们用代码来实现:
int main(void)
{
int a[10] = {8, 2, 5, 4, 6, 9, 1, 3, 7, 0};
int i, j, t;
for (i=1; i<10; i++){
t = a[i];
for (j=i; j>0 && a[j-1]>t; j--){
a[j] = a[j - 1];
}
a[j] = t;
}
for (i=0; i<10; i++){
printf("%d ", a[i]);
}
return 0;
}
这样就实现了插入排序。
现在让我们来分析一下代码。
代码中第8行到第14行实现了插入排序。
第8行的for循环从1开始,到9结束用来选定数组中的元素。
第9行用一个变量t,来保存选定的元素数值
第10行是内层循环,循环从选定的元素开始,每次减一。这层循环先判断是否为0,如果不为0,再判断是否小于前一个,如果小于就执行本次循环。
在循环里面,我们让数组中的元素向后移动一位,直到不满足条件为止。
等待循环结束后,我们将保存的数值t,赋值给结束时j号位的元素。
这样,插入排序就完成了!
排序专栏,一共八期,加上冒泡排序,一共九种排序方法,过年期间会全部推送。
敬请期待
以上是关于排序专栏:插入排序的主要内容,如果未能解决你的问题,请参考以下文章