c语言选择法k值,c语言选择法排序法

发布时间:2022-11-22

本文目录一览:

  1. c语言选择法中k值的作用是什么?
  2. c语言选择法排序的最后t=array[k];array[k]=array[i];array[i]=t这段是什么意思
  3. c语言选择法
  4. C语言 选择法排序 划线的地方 k为什么不能写成i
  5. 请问C语言选择排序的代码中引入“k"具体有什么作用?

c语言选择法中k值的作用是什么?

就是交换array[k]和array[i]中的数据。 为什么要这样呢? 生活中你想想,一个杯子里是酒精,一个杯子里是牛奶,如何把他们相互交换,肯定要借助一个空杯子中转一下。 例如:a 酒精 b牛奶 c空杯子 c-a a-b b-c 这里t就是那个空杯子。一个道理!

c语言选择法排序的最后t=array[k];array[k]=array[i];array[i]=t这段是什么意思

这组语句是交换两个元素的位置。 下面以升排序为例。 进入j循环前,k = i,假定最小,然后与后面的元素逐个比较,如果元素array[j] array[k],则记录这个元素的下标(k = j;),否则再与下一个元素进行比较,直到最后一个元素,此时,k记录的元素是最小的,至于是否有比arra[i]更小的,则通过比较i与k值就可以知道,如果有更小的,则必有i != k,此时就需要交换,此轮下来,array[i]一定是最小的,接下来再进行下一个元素的处理......

c语言选择法

// 我把你的程序修改了下,添加了些注释,你应该会看明白滴 // sort(int *, int)函数是由大到小的排序方法。采用的算法 // 是第一次从x[0]...x[4]中选出个最大的数,然后记录下它的索引, // 如果第一个数不是最大的,就把第一个数和最大数进行交换,使得 // x[0]是五个书中的最大数,第二次就从x[1]...x[4]中选一个最大的 // 然后把它放在x[1]的位置上。5个数,其实只需要四次就可以排好序滴 void sort(int *x,int n) { // i,j都是循环变量temp是用于交换的临时变量,max是用于记录每一趟循环 // 中找到的最大值的下标。我这里的temp对应你原理的t,max对应你原来的k int i, j, temp, max; // 1.外层的for循环用于控制查找的趟数,n个数排序,只需要n-1趟排序就可以滴 // 2.你原来是 i=n-1其实可以改为in-1.可以少一趟滴。 // 3.比如 1 2 3 这三个数排序,你可以先 假设第一个数即1是最大的,然后让1与第二个 // 4.数进行比较即1与2比较1 2你记下2对应的下标,再让2与第三个数比较2 3再记下 // 5. 3的下标所以3是最大的数字把3放到1的位置,把1放到3的位置,即交换位置。 // 6.经过一次排序后变为3 1 2 第二次再排1 与2先假设1是1与2中最大的12记下2的下标 // 7.交换1,2位置变为2 1 所以3个数进过两趟排序后已经变为有序了即3 2 1 // N个数只需N-1趟循环便可有序,外层循环用于控制循环趟数 for(i=0; in-1; i++) { // 先假设下标为i的数字是最大值 max = i; // 也是用于控制循环次数,在第i趟中找出最大数的下标 // 第一次是从x[0]..x[4]这5个数中找,第二次是从 // x[1]..x[4]4个数中找这4个数的最大值...第四次从x[3]与x[4]这两个数 // 中找最大值 for(j=i+1; jn; j++) { // 用于找最大值的下标 if(x[j] 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; } } }

C语言 选择法排序 划线的地方 k为什么不能写成i

因为i是外层循环变量,在循环体内不应改变其值!所以要用k作为中间临时变量

请问C语言选择排序的代码中引入“k"具体有什么作用?

k是标记最小数的 首先把k置为i 然后一轮比较下来(跟j比)如果j比k小 就把k置为j 最后把最小的那个记为a[k] 然后再跟a[0] 交换位置 希望你能明白