首页 > 综合问答 >

选择法排序过程(选择法)

发布时间:2023-03-04 02:00:31来源:

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

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; } } }。

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

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。