前言
在C语言中 用来解决排序问题的常见方法有选择排序和冒泡排序两种
一、选择排序
先上代码:
1.计算素组元素个数
通过 sizeof()计算数组全体元素占空间的大小 再去除以 一个元素占空间的大小 即可得到 元素个数 。
2.选择排序基本逻辑(例子是从大到小排列)
选择排序有些类似于“打擂台”,最强的占有第一个席位,第二强的占有第二个席位 以此类推。 列如 第一次 :例子中的5名选手都会上场打擂台,实力最强的胜出,也就是该数组最大的元素排在第一。 第二次 :最强者不参与他们的擂台赛,剩下4名决出仅次于第一的强者,就就是该数组的第二大元素。 按照次逻辑以此类推 只需要进行(数组元素总数-1场) ,当决出前4强后 最 弱的那一名 自动排到末位。
3.具体实现
1.外层循环: 决定大回合个数 每个大回合决出一个席位
for(i=0;i<siezof(arr)/sizeof(arr[0])-1;i++)
2.内层循环: 决定小回合个数 每个小回合进行1V1大战 实力强的为擂主 直至最后一位挑战者
for(j=i;j<sizeof(arr)/sizeof(arr[0])-1;j++)
3.两个元素值的交换
if(arr[i]<arr[j+1])
{
int tmp = arr[i];
arr[i] = arr[j+1];
arr[j+1]=tmp;
}
从小到大排 只需要改变if中的逻辑即可 如:
if(arr[i]<arr[j+1]) --> if(arr[i]>arr[j+1])
总结
感谢大家的观看 希望该文章能对你有帮助!
|