8.3选择排序选择排序的基本思想是:每次从待排序的数据元素集合中选取关键字最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时选择排序结束。常用的选择排序算法:(1)直接选择排序(2)堆排序
8.3 选择排序 选择排序的基本思想是:每次从待排序的数据元 素集合中选取关键字最小(或最大)的数据元素放到 数据元素集合的最前(或最后),数据元素集合不断 缩小,当数据元素集合为空时选择排序结束。 常用的选择排序算法: (1)直接选择排序 (2)堆排序
8.3.1直接选择排序1、其基本思想每经过一趟比较就找出一个最小值,与待排序列最前面的位置互换即可。(即从待排序的数据元素集合中选取关键字最小的数据元素并将它与原始数据元素集合中的第一个数据元素交换位置:然后从不包括第一个位置的数据元素集合中选取关键字最小的数据元素并将它与原始数据集合中的第二个数据元素交换位置;如此重复,直到数据元素集合中只剩一个数据元素为止。)2、优缺点优点:实现简单缺点:每趟只能确定一个元素,表长为n时需要n-1趟
8.3.1直接选择排序 1、其基本思想 每经过一趟比较就找出一个最小值,与待排序列最前 面的位置互换即可。 (即从待排序的数据元素集合中选取关键字最小的数据元 素并将它与原始数据元素集合中的第一个数据元素交换位 置;然后从不包括第一个位置的数据元素集合中选取关键 字最小的数据元素并将它与原始数据集合中的第二个数据 元素交换位置;如此重复,直到数据元素集合中只剩一个 数据元素为止。) 2、优缺点 优点:实现简单 缺点:每趟只能确定一个元素,表长为n时需要n-1趟
例3:关键字序列T=(21,25,4925*,16,08)请给出直接选择排序的具体实现过程。原始序列:21,25,49,25*,16,08直接选挣排序第1趟08,25,49,25*,16,21第208,16,49,25*,25,21第3趟08,16,21,25*,25,49第4趟08,16.21,25*,25,49第5趟08, 16,21,25*,25,49
例3:关键字序列T= (21,25,49,25*,16,08), 请给出直接选择排序的具体实现过程。 原始序列: 21,25,49,25*,16,08 第1趟 第2趟 第3趟 第4趟 第5趟 08,25,49,25* ,16,21 08,16, 49,25* ,25,21 08,16, 21,25* ,25,49 08,16, 21,25*,25,49 08,16, 21,25*,25,49
public static void selectSort(intl a)int i, j, small;int temp;int n = a.Length;for(i= 0; i<n - 1; i++)/设第i个数据元素最小small = i;//寻找最小的数据元素for(j =i+ 1;j< n; j ++)1/记住最小元素的下标if(alil < a[small) small = j;/当最小元素的下标不为时交换位置if(small != i)temp = a[i];a[i] = a[small];a[small] =temp;1
public static void selectSort(int[] a){ int i, j, small; int temp; int n = a.Length; for(i = 0; i < n - 1; i ++){ small = i; //设第i个数据元素最小 for(j = i + 1; j < n; j ++) //寻找最小的数据元素 if(a[j] < a[small]) small = j; //记住最小元素的下标 if(small != i){ //当最小元素的下标不为i时交换位置 temp = a[i]; a[i] = a[small]; a[small] = temp; } } }