选择排序
来源:互联网 发布:淘宝卖家号怎么关闭 编辑:程序博客网 时间:2024/05/22 06:58
基本思想:
假设有4个元素,其序列4、2、5、1. 我们以第一个元素(即4)开始,看它后面有没有比它还小的(在比它小的数中选最小那个),然后选择1,让4和1交换,如此,序列变成了1、2、5、4了(当然如果后面没有比4小的数,就不用交换,即原序列不变)。我们再以第二个元素开始(即2),再扫描后面的元素(与第一步做法类似)……,序列变成
1、2、5、4,(就是没变,因为2后面没有比它更小的)。再以第三个数(即5)开始……,序列变成1、2、4、5.再以第四个数(即5)开始,后面没数了,结束!
共找了3(即4-1)遍。
//实现代码:#include<stdio.h>#define MAXSIZE 100 //定义数组最大容量int a[MAXSIZE]; int main(){int i,j,temp,n;printf("请输入元素的个数:");scanf("%d",&n);printf("请输入这%d个元素:",n);for(i=0;i<n;i++)scanf("%d",&a[i]);int m; //记录当前比较时,最小那个数的下标for(j=0;j<n;j++){m=j; //就先假设a[j]最小,所以记录它的下标jfor(j=0;j<n-1;j++) //共找了n-1遍{//让a[j]即a[m]与它后面的数a[i]逐个比较,选出最小那个,把它的下标i赋给mif(a[i]<a[m])m=i;}if(m!=j)//就是说,如果刚才找的最小下标m不是j的话,就让a[j]与a[m]交换{temp=a[j];a[j]=a[m];a[m]=temp;}}printf("排序后的序列为:");for(i=0;i<n;i++) //输出排序后的序列printf("%d ",a[i]);printf("\n");return 0;}
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序:
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 选择排序
- 深入理解DOCTYPE之 DOCTYPE的标准模式、近似标准模式 及 怪异模式
- 如何学习java(从基础到高阶)
- 自动装箱/拆箱(Autoboxing/unboxing)
- 八条设计多线程程序的简单规则
- 设置表格边框颜色
- 选择排序
- 第三章数程序设计初步--循环结构项目5贪财的富翁
- 多线程程序常见Bug剖析
- VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”
- RedHat Server Enterprise 6安装G++
- Tomcat6和Tomcat7配置SSL通信的比较
- 两种堆排序的比较
- The new way of ioctl()---ioctl新方法
- Vs2010第一个项目