选择法排序c语言(选择法)

时间:2023-11-23 14:40:09 编辑:

导读 大家好,小乐来为大家解答以上的问题。选择法排序c语言,选择法这个很多人还不知道,现在让我们一起来看看吧!1、 我把你的程序修改了下,

大家好,小乐来为大家解答以上的问题。选择法排序c语言,选择法这个很多人还不知道,现在让我们一起来看看吧!

1、// 我把你的程序修改了下,添加了些注释,你应该会看明白滴// sort(int *, int)函数是由大到小的排序方法。

2、采用的算法// 是第一次从x[0]...x[4]中选出个最大的数,然后记录下它的索引,// 如果第一个数不是最大的,就把第一个数和最大数进行交换,使得// x[0]是五个书中的最大数,第二次就从x[1]...x[4]中选一个最大的// 然后把它放在x[1]的位置上。

3、5个数,其实只需要四次就可以排好序滴void sort(int *x,int n){ // i,j都是循环变量temp是用于交换的临时变量,max是用于记录每一趟循环 // 中找到的最大值的下标。

4、我这里的temp对应你原理的t,max对应你原来的k int i, j, temp, max; // 1.外层的for循环用于控制查找的趟数,n个数排序,只需要n-1趟排序就可以滴 // 2.你原来是 i<=n-1其实可以改为i

5、 // 3.比如 1 2 3 这三个数排序,你可以先 假设第一个数即1是最大的,然后让1与第二个 // 4.数进行比较即1与2比较1 < 2你记下2对应的下标,再让2与第三个数比较2 < 3再记下 // 5. 3的下标所以3是最大的数字把3放到1的位置,把1放到3的位置,即交换位置。

6、 // 6.经过一次排序后变为3 1 2 第二次再排1 与2先假设1是1与2中最大的1<2记下2的下标 // 7.交换1,2位置变为2 1 所以3个数进过两趟排序后已经变为有序了即3 2 1// N个数只需N-1趟循环便可有序,外层循环用于控制循环趟数 for(i=0; i x[max]) max = j; } // 看第i趟循环中看x[i]是不是最大值如果是就不需要交换了 // 你也可以改为 if (x[i] < x[max]){交换两个数} if(i!=max) { temp = x[i]; x[i] = x[max]; x[max] = temp; } } }。

本文到此分享完毕,希望对大家有所帮助。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!

© 2008-2024 All Rights Reserved .乐拇指 版权所有

网站地图 | 百度地图