算法——选择排序
来源:互联网 发布:故宫 书目 知乎 编辑:程序博客网 时间:2024/06/05 20:43
踏踏实实学算法,从今天开始,从现在开始。
选择排序的思想:从开始遍历选择最小的元素与第一个元素进行交换,则第一个数字为最小,再从剩下元素中选择最小的元素与第二个进行交换,直到最后一个元素,数组实现排序。(从结尾遍历选择最大的元素)
优化:把在无序序列中选择最大元素的过程写成一个函数,更加容易理解。
public class SelectionSort { /** * 写在一个函数里,找最大 * @param array */ public static void sortOne(int[] array){ int length = array.length; for (int i = length-1; i > 0; i--) { int index = i; for ( int j = index - 1; j >= 0; j--) { if (array[j] > array[i]) { index = j; // 标记未排序元素中最大数的位置 } } // 未排序中最大数与未排序中最后一个数交换 if (i != index) { int temp = array[i]; array[i] = array[index]; array[index] = temp; } } } /** * 写在一个函数里,找最小 * @param array */ public static void sortOneOne(int[] array) { int length = array.length; for (int i = 0; i < length - 1; i++) { int index = i; for (int j = index; j <= length-1; j++) { if (array[j] < array[i]) { index = j; } if (i != index) { int temp = array[i]; array[i] = array[index]; array[index] = temp; } } } } /** * 写在两个函数里 * @param array destination array */ public static void sortTwo(int[] array) { int length = array.length; for(int i = length-1; i > 0; i--) { int index = indexOfLargest(array, 0, i); int temp = array[index]; array[index] = array[i]; array[i] = temp; } } /** * 找到数组指定范围的最大值的index */ private static int indexOfLargest(int[] array, int start, int end) { int max = array[start]; int index = 0; for (int i = start+1; i <= end; i++) { if (array[i] > max) { max = array[i]; index = i; } } return index; } public static void main(String[] args) { int[] array = {0,9,8,7,6,5,4,3,2,1};// SelectionSort.sortOne(array);// SelectionSort.sortOneOne(array); SelectionSort.sortTwo(array); for(int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }}
如果本博客对你有一定帮助,客官请留下你的脚步吧…
阅读全文
0 0
- 排序算法—选择排序
- 排序算法之选择排序——简单选择排序
- 数据结构&算法实践—【排序|选择排序】选择排序
- 算法 —— 选择排序
- 算法——选择排序
- 【算法】——选择排序
- 算法基础—选择排序
- Java算法—选择排序
- 【算法系列】—选择排序
- 排序算法之——选择排序
- 排序算法——选择排序
- 排序算法——选择排序
- 排序算法——简单选择排序
- 排序算法总结——选择排序
- 内部排序算法——选择排序
- 排序算法2——选择排序
- 排序算法——选择排序
- 排序算法——选择排序
- linux内核的一点总结
- 行列递增矩阵的查找
- network相关
- 内存管理
- 排序算法稳定性
- 算法——选择排序
- 构造函数的细节
- xdm配置
- 动态链接库
- Wikipedia Search 第三方维基百科——调用wikipedia的api进行查询
- socket中的短连接与长连接,心跳包示例详解
- 京东
- 电视影评-《战狼2》观后感
- Shell脚本常识(基本知识)