经典算法(19)教你两分钟学会【选择排序】
2020-03-06 10:55
239 查看
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。
技术是开源的、知识是共享的。
这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。
用知识改变命运,让我们的家人过上更好的生活。
相关文章:
文章目录
一、选择排序介绍
选择排序(Selection sort)是一种简单直观的排序算法。
二、算法思想
第 1 趟
从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置;
然后再从剩余的未排序元素中寻找到最小(大)元素,放到已排序的序列的末尾。
以此类推,直到全部待排序的数据元素的个数为零,元素全部有序。
三、实现过程
规律:
- 第 1 趟:
从n个数据中找出最小的数据和第一个数据交换
; - 第 2 趟:
从第二个数据开始的n-1个数据中再选出最小的数据与第二个数据交换
; - 以此类推…
- 第 i 趟,则
从第 i 个数据开始的 n-i+1 个数据中选出最小的数据与第i个数据交换,直到整个序列有序
。
四、代码实现
public class SelectSort { public static void main(String[] args) { System.out.println("输入要排序的值,输入的每个值用逗号隔开:"); Scanner input = new Scanner(System.in); String str = input.nextLine(); // 将字符串按照","拆分成字符串数组 String[] strArray = str.split(","); // 新建数组用来存储拆分出来的每个值 int[] array = new int[strArray.length]; // 给数组循环遍历赋值 for (int i = 0; i < strArray.length; i++) { array[i] = Integer.parseInt(strArray[i]); } System.out.println("排序前的数组:" + Arrays.toString(array)); // 排序 selectSort(array); System.out.println("排序后的数组:" + Arrays.toString(array)); } /** * 选择排序 * * @param array 待排序的数组 */ private static void selectSort(int[] array) { //判断数组为空或为一个元素的情况 if (null == array || array.length <= 1) { return; } for (int i = 0; i < array.length - 1; i++) { int tempIndex = i; // 当前最小元素的索引 int temp = array[i]; // 临时变量为当前最小元素 // 循环遍历待排序的数组 for (int j = i + 1; j < array.length; j++) { // 如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量 if (temp > array[j]) { temp = array[j]; tempIndex = j; } } // 如果临时变量发生改变,则说明有比当前外层循环位置更小的元素,需要将这两个元素交换位置 if (tempIndex != i) { array[tempIndex] = array[i]; array[i] = temp; } System.out.println(" 第" + (i + 1) + "趟后:" + Arrays.toString(array)); } } }
执行结果:
由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!
- 点赞 21
- 收藏
- 分享
- 文章举报
相关文章推荐
- 经典算法-选择排序(SelectionSort)
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 【经典算法】第二回:选择排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 经典算法系列四----冒泡与选择排序
- Java中的经典算法选择排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- Java(.NET)经典排序算法之选择排序
- 经典算法学习——直接选择排序
- 三个典型的经典算法冒泡排序,插入排序,选择排序
- 【经典算法】直接选择排序
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 决胜经典算法之选择排序
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- 经典算法系列之四 直接选择排序及交换二个数据的正确实现