java学习笔记之数组排序

来源:互联网 发布:qq软件被破坏 编辑:程序博客网 时间:2024/05/14 02:30

java的三种数组排序方式

  • 冒泡排序
  • 选择排序
  • 插入排序
  • -

排序的实现

package com.yu.sort;public class SortUtils {    /**     * 冒泡排序     * @param arr     */    public static  void bubbleSort(int[] arr) {        for (int i = 0; i < arr.length; i++) {            for (int j = arr.length-1; j > i; j--) {   // 从后往前 相邻比较 小的往前移                if (arr[j] < arr[j-1]) {                    int temp = arr[j];                    arr[j] = arr[j-1];                    arr[j-1] = temp;                }            }        }    }    /**     * 选择排序     * 特定的元素和后面的元素选择进行比较      * 若比后面的大 则交换     * @param arr     */    public static void selectSort(int[] arr) {        int temp = 0;        for (int i = 0; i < arr.length; i++) {            for (int j = i+1; j < arr.length; j++) {                if (arr[j] < arr[i]) {                    temp = arr[i];                    arr[i] = arr[j];                    arr[j] = temp;                }            }        }    }    /**     * 选择排序     * 特定的元素和后面的元素依次比较      * 选择出最小元素的角标 然后交换     * @param arr     */    public static void selectSort2(int[] arr) {        int temp = 0;        int k =0;        for (int i = 0; i < arr.length; i++) {            k = i;            for (int j = i+1; j < arr.length; j++) {                if (arr[j] < arr[k]) {                    k = j;                }            }            temp = arr[k];            arr[k] = arr[i];            arr[i]   = temp;        }    }    /**     * 插入排序     * @param arr     */    public static void insertSort(int[] arr) {        int k = 0;        for (int i = 0; i < arr.length; i++) {            k = i;            int temp = arr[i];            for (int j = 0; j < i; j++) {                if (arr[j] > arr[k]) {                    k = j;      // 获取插入点                    break;                }            }            if(k != i){                 for (int j = i; j > k; j--) {                     arr[j] = arr[j-1];   // 移动大于temp的值                }                arr[k] = temp;            }        }    }    /**     * 插入排序     * @param arr     */    public static void insertSort2(int[] arr) {        if (arr.length < 2) {   // 长度小于2 直接结束            return;        }        for (int i = 1; i < arr.length; i++) {            int temp = arr[i];            int k = i;            while(k > 0 &&  arr[k-1] > temp){   // 判断k是否大于0  并且上一项大于temp                arr[k] = arr[k-1];                k--;            }            arr[k] = temp;        }    }}
0 0