陣列排序之直接選擇排序
阿新 • • 發佈:2018-12-12
一、基本思想
直接選擇排序屬於選擇排序的一種,其排序速度要比氣泡排序快,其基本思想就是將指定排序位置與其他陣列元素分別進行對比,如果滿足條件就交換元素值,注意區別冒牌排序,這裡不是交換相鄰元素,而是把滿足條件的元素與指定的排序位置交換(如從最後一個元素開始排序),這樣排序好的位置逐漸擴大,最後整個陣列都已成為排序好的格式。
這就好比軍訓時排隊一樣,先從一群學生中找出最高的放在第一位,然後在選出第二高的放在第二位,一次類推直到結束。與氣泡排序相比,直接選擇排序的交換次數要少很多,所以速度會更快一些。
二、演算法實現
package cn.szxy.hq; /** * Created by HQ on 2018/9/30. */ public class SelectSort { public static void main(String[] args) { int[] array = {12, 78, 22, 63, 65, 40, 23}; SelectSort selectSort=new SelectSort(); System.out.println("排序前:"); selectSort.showArray(array); selectSort.sort(array); System.out.println("排序後:"); selectSort.showArray(array); } /** * 直接選擇排序 * @param array */ public void sort(int[] array) { int index; for (int i = 1; i < array.length; i++) { index = 0; // 記載下標 for (int j = 1; j < array.length - i; j++) { if (array[j] > array[index]) { index = j; } } //交換位置在array.length-i和index(最大值)上的兩個數 int temp = array[array.length - i];//把第一個元素儲存到臨時變數中 array[array.length - i] = array[index];//把第二個元素值儲存到第一個元素中 array[index] = temp;//把臨時變數的值儲存到第二個元素中 } } /** * 顯示陣列中的元素 * * @param array */ public void showArray(int[] array) { for (int i : array) { //遍歷陣列 System.out.print(i + " "); //輸出每一個元素的值 } System.out.println(); } }