插入算法C/C++实现

最近在复习十大排序算法,网上的代码有些有点问题,就自己敲一下。

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;
}

 

猜你喜欢

转载自blog.csdn.net/zhanggonglalala/article/details/82825966