1. 程式人生 > >一維陣列常見的三種排序、氣泡排序、選擇排序、插入排序、Arrays內建排序

一維陣列常見的三種排序、氣泡排序、選擇排序、插入排序、Arrays內建排序

一維陣列的 氣泡排序 選擇排序 插入排序 Arrays內建排序

package arithmetic;

import java.util.Arrays;

/**
 *  一維陣列的排序
 *      氣泡排序
 *      選擇排序
 *      插入排序
 *      Arrays類內建方法排序
 *
 * @author sunRainAmazing
 *
 */
public class OneArraySort {
        public static void main(String[] args) {
            int[] arr={12,3,45,24
,58,14,8}; printArray(arr); Arrays.sort(arr);// Arrays類的sort方法 printArray(arr); // printArray(bubbleSort(arr));//氣泡排序 // printArray(selectSort(arr));//氣泡排序 // bubbleSort(arr); // selectSort(arr);//選擇排序 // select1Sort(arr);//選擇排序 // insertSort(arr);//選擇排序
// // printArray(arr); } /** * 判斷陣列長度是否小於2 * @param arr 陣列 * @return 是 返回 true,否 返回false */ private static boolean backArray(int[] arr){ if(arr.length<2){ return true; } return
false; } /** * 輸出 陣列 * @param array */ private static void printArray(int []array){ for (int i : array) { System.out.print(i+"\t"); } System.out.println(); } /** * 交換陣列的位置 */ private static void swap(int[] arr, int i, int j) { int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } /** * 進行氣泡排序 * @param arr 排序的陣列 * @return */ public static int[] bubbleSort(int[] arr){ //1、判斷陣列的長度 if(backArray(arr)){ return arr; } //2、進行氣泡排序 for (int i = 0; i < arr.length-1; i++) { for (int j = 1; j < arr.length-i; j++) { if( arr[j] < arr[j-1]){ //3、交換位置 swap(arr,j-1,j); // int temp=arr[j]; // arr[j]=arr[j-1]; // arr[j-1]=temp; } } } return arr; } /** * 選擇排序 尋找下標 * @param array * @return */ public static int[] selectSort(int[] array) { if (array.length <= 1) { return array; } // for (int i = 1; i < array.length; i++) { // int index = 0;// 預設最大值下標 // for (int j = 1; j < array.length - i + 1; j++) { // if (array[j] > array[index]) { // index = j; // } // } // swap(array, array.length - i, index); // } for (int i = 1; i < array.length; i++) { int maxIndex = 0; for (int j = 1; j <= array.length - i; j++) if (array[j] > array[maxIndex]) maxIndex = j; int temp = array[array.length - i]; array[array.length - i] = array[maxIndex]; array[maxIndex] = temp; } return array; } /** * 選擇排序 * @param arr */ public static void select1Sort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { // 找最小值 的位置 int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } // 與當前考察位置 數 交換 swap(arr, minIndex, i); } } /** * 插入排序 * @param arr */ public static void insertSort(int [] arr){ // for (int i = 1; i < arr.length; i++) { // for (int j = i; j > 0; j--) // if (arr[j] < arr[j - 1]) // swap(arr, j, j - 1); // } for (int i = 1; i < arr.length; i++) { for (int j = i; j > 0; j--) { if (arr[j] < arr[j-1]) {// 進行交換 int temp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = temp; } else { break; } } } } }