算法排序

                                   基本排序算法

 

绪:到目前为止学过的算法有很多,也很杂。随着工作中的应用,慢慢的发现,使用还是最初的冒泡排序,学习的高级排序算法一点也没有用到,而且也不考虑一些优化的内容。不知道这是怎么了,也许是写的项目要求不高,只要实现基本功能就可以了。还是自己对自己的要求降低了。我很有必要写一篇比较,以及算法的实现。

 

排序的目的:

       我认为排序就是为了查找方便,一切都是为了查找,无论是在搜索引擎还是在网上查资料。基本功能都是查询。

 

一、直接插入排序

 

int a[10]={100,52,34,89,55,58,45,43,23,12}; 
int i,j,k,temp;
for(i=1;i<10;i++){
	temp = a[i]; //待插入元素
	j=i-1;       //待比较元素 
	while((a[j]>temp) && (j>=0)){
		a[j+1]=a[j];
		j--;
	} 	
	a[j+1]=temp;	
} 
for(k=0;k<10;k++)printf("%d,",a[k]); 

 结论:

    把关键字插入到前面有序的数组中,把其他关键字后移。

 

 二、交换排序(冒泡排序)

int a[10]={1,52,34,89,55,58,45,43,23,12}; 
int i,j,k;
for(i=0;i<10;i++){
	for(j=i+1;j<10;j++){
		if(a[i]>a[j]){
			k=a[i];
			a[i]=a[j];
			a[j]=k;	
		}
	}
} 
for(k=0;k<10;k++)printf("%d,",a[k]); 

 结论:

       每次排序都会有一个数在正确的位置,即是冒泡排序,第一个关键字与第二个关键字比较,若逆序则交换,然后第二个与第三个比较,若逆序则交换,依次类推。

 

 

猜你喜欢

转载自435727748.iteye.com/blog/2310607
今日推荐