赞
踩
已经完全掌握了冒泡排序和二分查找的同学,可以自己尝试学习选择、插入排序。不要求今天全部掌握,最近2-3天掌握即可!
选择排序(Selection Sort)的原理有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾,最终完成排序。
选择排序算法描述:
选择排序过程如下图:
源码实现:
import java.util.Arrays; public class Test07_SelectSort { public static void main(String[] args) { //准备一个int数组 int[] array = {5, 2, 6, 5, 9, 0, 3}; System.out.println("排序前: "+ Arrays.toString(array)); //插入排序 selectionSort(array); //输出排序结果 System.out.println("排序后: "+ Arrays.toString(array)); } public static void selectionSort(int[] arr) { int len = arr.length; if(len <= 1) return; //外层循环控制总体排序次数 for(int i = 0; i < len-1; i++) { int minIndex = i; //内层循环找到当前无序列表中最小下标 for(int j = i + 1; j < len; j++) { if(arr[minIndex] > arr[j]) { minIndex = j; } } //将无需列表中最小值添加到 有序列表最后位置 if(minIndex != i) { arr[minIndex] = arr[minIndex] ^ arr[i]; arr[i] = arr[minIndex] ^ arr[i]; arr[minIndex] = arr[minIndex] ^ arr[i]; } //System.out.println(Arrays.toString(arr)); } } }
插入排序(Insertion Sort),一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法。
插入排序算法描述:
插入排序过程见下图:
源码实现:
import java.util.Arrays; public class Test07_InsertSort { public static void main(String[] args) { //准备一个int数组 int[] array = {5, 2, 6, 5, 9, 0, 3}; System.out.println("排序前: "+ Arrays.toString(array)); //插入排序 insertionSort(array); //输出排序结果 System.out.println("排序后: "+ Arrays.toString(array)); } public static void insertionSort(int[] arr) { int len = arr.length; if(len <= 1) { return; } //外层循环控制 总体循环次数 for(int i = 1; i < len; i++) { //内层循环做的事情:将无序列表中第一个元素插入到有序列表中合适位置 int value = arr[i]; //获取有序列表中最后一个元素下标 int j = i - 1; for(; j >= 0; j--) { if(value < arr[j]) { arr[j+1] = arr[j]; }else { break; } } //将需要插入的元素 放置到合适位置 arr[j+1] = value; //一次排序完成后,输出 方便 观察 System.out.println(Arrays.toString(arr)); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。