首页 > 学院 > 开发设计 > 正文

排序算法之选择排序

2019-11-11 05:11:29
字体:
来源:转载
供稿:网友

选择排序核心思想 跟 冒泡排序差不多。

冒泡排序做得比较多无用功,而选择排序相对较少。

选择排序代码如下:

#include<stdio.h>void swap(int *a,int *b){	int t;	t = *a;	*a = *b;	*b = t;}int main(){	int a[]={5,2,3,1,4};	int i,j,min,len;		len = sizeof(a)/sizeof(int);		/*-----主要语句-----*/	for(i=0;i<len;i++)	{		min = i;		for(j=i+1;j<len;j++)			if(a[min]>a[j])				min = j;				if(min!=i)			swap(&a[i],&a[min]);	}	/*---------------*/ 		for(i=0;i<len;i++)		PRintf("%d,",a[i]);		return 0;} 打印结果:1,2,3,4,5

由上图可知道,选择排序在第二层for循环中,是用 min 来记录下较小数值的下标,一轮循环过后,min自然是最小的数值的下标,然后再做数值交换。

所以在二层for循环,一轮循环,才会做一次数值交换,而不像冒泡排序,只要是检测到比最小的还小的数值就马上做数值交换,而不等到整个循环结束(你怎么知道下一个会不会更小呢?)

因此冒泡排序是十分慢的算法


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表