C语言,0602P,选择排序法。
2021/11/12 23:42:51
本文主要是介绍C语言,0602P,选择排序法。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我遇到了一个很容易犯的错误。中间的值可能没有进行替换。
数组比大小的时候(从大到小排序),从第一个元素开始往后比的话,要考虑两种情况。
1,后一个元素大于前一个元素,就要把这两者的值进行交换。
2,如果是前一个元素大于后一个元素,就保持前一个元素的值不动,进行下一次的循环,这里就要用到另一个临时变量进行控着这个值不动。
#include<stdio.h> int main() { void sort(int array[],int n);//这里就是声明函数。 int a[10],i; //printf("初始化数组\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); sort(a,10);//这里是调用函数。 for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); return 0; } /*下面是定义函数,把它放到主函数的外面。然后再再主函数中声明这个函数的首部就可以用了。 或者可以直接复制循环结构拿出用。 */ void sort(int array[],int n)//这里的 n 代表数组的大小。 { int i,j,k,t;//这里的k用来临时替代数组元素。 for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) { if(array[j]>array[k]) { k=j; } } //后一个元素大于前一个元素就要把值赋给k,此时 k 不等于 i 就要进行前后两个元素的值替换。 //如果上面的条件没满足,此时 k 是等于 i的,那么下面的条件也不满足,就要进行下一次循环。 if(k!=i) { t=array[k]; array[k]=array[i]; array[i]=t; } } }
这样就可以顺利进行排序,中间就不会出现没有被替换的情况。
这篇关于C语言,0602P,选择排序法。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Nacos多环境配置学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos快速入门学习入门
- 2024-12-27Nacos配置中心学习入门指南
- 2024-12-27Nacos配置中心学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos做项目隔离学习入门
- 2024-12-27Nacos初识学习入门:轻松掌握服务发现与配置管理
- 2024-12-27Nacos初识学习入门:轻松掌握Nacos基础操作
- 2024-12-27Nacos多环境配置学习入门