快捷搜索:  汽车  科技

数据结构所有的排序算法(数据结构与算法之选择排序)

数据结构所有的排序算法(数据结构与算法之选择排序)① 第一轮从下标为 1 到下标为 n-1 的元素中选取最小值,若小于第一个数,则交换② 第二轮从下标为 2 到下标为 n-1 的元素中选取最小值,若小于第二个数,则交换③ 依次类推下去……3. 动图演示

选择排序(Selection Sort)

1. 基本思想

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的思想其实和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面,或者将最大值放在最后面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择,每一趟从前往后查找出无序区最小值,将最小值交换至无序区最前面的位置。

2. 实现逻辑

① 第一轮从下标为 1 到下标为 n-1 的元素中选取最小值,若小于第一个数,则交换
② 第二轮从下标为 2 到下标为 n-1 的元素中选取最小值,若小于第二个数,则交换
③ 依次类推下去……

3. 动图演示

数据结构所有的排序算法(数据结构与算法之选择排序)(1)

public class SelectSort { public static void main(String[] args) { int[] arr = {101 34 119 1 -1 90 123}; System.out.println("排序后"); selectSort(arr); for(int i:arr){ System.out.println(i); } } //选择排序 public static void selectSort(int[] arr) { //在推导的过程,我们发现了规律,因此,可以使用for来解决 //选择排序时间复杂度是 O(n^2) for (int i = 0; i < arr.length - 1; i ) { int minIndex = i; int min = arr[i]; for (int j = i 1; j < arr.length; j ) { if (min > arr[j]) { // 说明假定的最小值,并不是最小 min = arr[j]; // 重置min minIndex = j; // 重置minIndex } } if (minIndex != i) { arr[minIndex] = arr[i]; arr[i] = min; } } } }

猜您喜欢: