大家好,又见面了,我是你们的朋友全栈君。
文章目录
前言
在C语言中 用来解决排序问题的常见方法有选择排序和冒泡排序两种
一、选择排序
先上代码:
1.计算素组元素个数
通过 sizeof()计算数组全体元素占空间的大小 再去除以 一个元素占空间的大小 即可得到 元素个数 。
2.选择排序基本逻辑(例子是从大到小排列)
选择排序有些类似于“打擂台”,最强的占有第一个席位,第二强的占有第二个席位 以此类推。
列如
第一次 :例子中的5名选手都会上场打擂台,实力最强的胜出,也就是该数组最大的元素排在第一。
第二次 :最强者不参与他们的擂台赛,剩下4名决出仅次于第一的强者,就就是该数组的第二大元素。
按照次逻辑以此类推 只需要进行(数组元素总数-1场) ,当决出前4强后 最
弱的那一名 自动排到末位。
3.具体实现
1.外层循环: 决定大回合个数 每个大回合决出一个席位
for(i=0;i<siezof(arr)/sizeof(arr[0])-1;i++)//前4位排好最后一位自动排好
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])
总结
感谢大家的观看 希望该文章能对你有帮助!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153001.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...