排序算法---选择排序(Selection Sort)
2017-07-29 17:26
357 查看
查看原文:简书地址
刚刚写完了冒泡排序,激动的我停不下来,然后马上看了选择排序。
发现果然踩过前面的坑之后,现在自己学起来会快很多。
所以各位学习的童鞋,你们对于数据结构和算法方面的学习一定要持之以恒,相信终有一天会练成传说中的无敌神功。
运行结果:
刚刚写完了冒泡排序,激动的我停不下来,然后马上看了选择排序。
发现果然踩过前面的坑之后,现在自己学起来会快很多。
所以各位学习的童鞋,你们对于数据结构和算法方面的学习一定要持之以恒,相信终有一天会练成传说中的无敌神功。
哈哈,毕竟这么迟钝的我也在慢慢努力。但是我坚信:“所有的梦想都会因努力而不期而遇”!
算法基本思想:
从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素,然后交换。代码实现:
选择排序是不稳定的。分析可以看出,对于一个长度为n的数组,需要进行n-1趟操作,才能完全确保排序完成,时间复杂度为O(n^2)。import java.util.Arrays; public class SelectionSort { public static void sort(int[] arr) { int len = arr.length; int slcIndex; int tmp; System.out.println("原始顺序: " + Arrays.toString(arr)); for (int i = 0; i < len - 1; i++) { //依次选择前n-1个数,以索引作为依据 slcIndex = i; for (int j = i + 1; j < len; j++) { //与被选中的数之后的每个数进行比较 if (arr[j] < arr[slcIndex]) { //存在更小的数,替换索引 slcIndex = j; } } //交换数据 if (slcIndex != i) { tmp = arr[i]; arr[i] = arr[slcIndex]; arr[slcIndex] = tmp; } System.out.println("第" + (i + 1) + "趟排序:" + Arrays.toString(arr)); } } public static void main(String[] args) { int[] arr = new int[10]; //初始化数组 for (int i = 0; i < 10; i++) { arr[i] = (int) (Math.random() * (100 + 1)); } SelectionSort.sort(arr); } }
运行结果:
相关文章推荐
- 【排序算法】 选择排序 selection sort(选择类排序)
- 排序算法-选择排序 Selection Sort
- 排序算法总结之选择排序 Selection Sort
- 排序算法--选择排序(Selection Sort)_C#程序实现
- 基本排序算法01----选择排序(selection sort)
- Java实例7 - 选择排序 Selection Sort
- PHP四种基础排序算法--冒泡,直接插入,快速和选择排序
- 【排序算法】选择排序(C++实现)
- 排序算法:选择排序
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 排序算法-选择排序
- 排序算法-选择排序
- python语言小程序——排序算法1(选择排序、起泡排序)
- Selection Sort(排序详解 之 选择排序)
- 数据结构中排序算法-选择排序(3)
- 排序算法汇总之--选择排序(升序)
- 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
- 排序算法2--简单选择排序、堆排序
- 排序算法:选择排序
- 常见的排序算法(二) 选择排序