最近在复习十大排序算法,网上的代码有些有点问题,就自己敲一下。
10大排序算法有篇博客写的很好https://www.cnblogs.com/onepixel/articles/7674659.html,有动图,解释清晰。大家可以去看看。如果有什么小问题小理解我会写在这里,欢迎大家和我交流。
这里解释一下什么事稳定性,我的理解是,当你排序时,会不会打乱未排序序列的相对位置。简单一点,排序时,一小部分依次排序,这样其他位置无序序列是不动的。比如冒泡,我们仅仅是将最大值放到序列的底部,当我们进行某一次排列时,除了最大值的位置变动了,其他值的相对位置是不变的。
一、插入排序
C语言代码,手打,可用,欢迎粘贴研究。首先你可以看一下前面给出的博客的排序思想,代码意思是就是每一次都把新的无序值拿过来,和前面有序列比较,如果小于有序列的值互换,否则跳出。
#include<stdio.h>
int main()
{
int a[10]={1,4,3,5,9,0,8,2,7,6};
int i=0,j=0;
int tmp=0;
for(i=1;i<10;i++)
{
for(j=i-1;j>=0;j--){
if(a[j+1]<a[j]){
tmp=a[j+1];
a[j+1]=a[j];
a[j]=tmp;
}
else{
break;
}
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}