然后每一趟将待排序中的最小值和待排序中第1个元素交换,此时待排序中第1个元素就能归到已排序中。
将这个流程进行 6 趟就完成了排序。
选择排序原理:①、初始时在序列中找到最小(大)元素,放到序列的起始位置作为已排序序列 ②、再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾 ③、以此类推,直到所有元素均排序完毕。
选择排序与冒泡排序区别:选择排序是在剩下的待排序数字里面找个最小的再交换;冒泡排序是看见小的就交换。
选择排序代码:#include <cstdio>/* 交换函数* 传入:待交换两元素的地址 */void swap(int *x, int *y) {int temp = *x;*x = *y;*y = temp;}/* 增序的选择排序* 传入:待排序数组a、数组元素个数n */void selectSort(int a[], int n) {/* 进行n趟 *** 作 */for(int i = 0; i < n; i++) {int min_index = i; //记录待排序部分中最小值的下标/* 扫描待排序部分,知道到最小值的下标 */for(int j = i; j < n; j ++) {if(a[j] < a[min_index])min_index = j; //时刻更新最小值下标}swap(a + i,a + min_index); //交换 当前位 和 待排序部分中最小值}}int main() {int a[] = {5,2,3,4,15,16,100,23,88};selectSort(a, 9);for(int i = 0; i < 9; i++)printf(“%d “, a[i]);//输出结果:2 3 4 5 15 16 23 88 100}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)