- 选择NUM-1轮,每轮从待排数组(除已排元素之外的元素构成的集合组成的数组)中选最小的放到待排数组。第一个循环从待排数组中找到最小的,记录其下标交换,依此,每轮都选最小的直至NUM-1轮
66 43 89 98 12 18 15 23 33 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 43 89 98 66 18 15 23 33 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 89 98 66 18 43 23 33 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 98 66 89 43 23 33 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 23 66 89 43 98 33 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 23 33 89 43 98 66 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 23 33 43 89 98 66 50 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 23 33 43 50 98 66 89 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 23 33 43 50 66 98 89 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 12 15 18 23 33 43 50 66 89 98 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
//选择排序 void select_sort(int* a, int len){ int minIdx; int t; for (int i = 0; i < len - 1; i++){//len-1轮 //从 待排数组中(i - len-1) 找出最小的 minIdx = i;//先假设待排数组中第一个最小 for (int j = i + 1; j < len; j++){ minIdx = (a[minIdx] < a[j]) ? minIdx : j; /* if (a[minIdx] < a[j]) minIdx = minIdx; else minIdx = j; if (a[minIdx] > a[j]) minIdx = j; */ } //和待排数组中第一个位置(i)交换 if (a[minIdx] < a[i]){ t = a[minIdx]; a[minIdx] = a[i]; a[i] = t; } } }
排序算法——选择排序
于 2023-12-18 22:58:46 首次发布