java排序算法(持续更新)

package exception;

import java.util.Arrays;

public class Sort {
	public static void main(String[] args) {
		int[] array = {1,5,2,9,7,8,6,4,0};
//		System.out.println(Arrays.toString(bundleSort(array)));
//		System.out.println(Arrays.toString(insertSort(array)));
		System.out.println(Arrays.toString(selectSort(array)));
	}
	/**
	 * 冒泡排序
	 * 数组中相邻两个数据进行比较,将较大的往后放
	 * @param array
	 * @return
	 */
	static int[] bundleSort(int[] array) {
		for (int i = 0; i < array.length; i++) {
			for (int j = i; j < array.length-1; j++) {
				int temp = array[j];
				if(array[j] > array[j+1]) {
					array[j] = array[j+1];
					array[j+1] = temp;
				}
			}
		}
		return array;
	}
	
	/**
	 * 插入排序
	 * 将后一个数和他前面所有的元素进行比较,然后确定他的位置
	 */
	static int[] insertSort(int[] array) {
		for (int i = 1; i < array.length; i++) {
		    int temp = array[i];
		    int j = i;
            for (;j>0; j--) {
                if(temp<array[j-1]){
                    array[j] = array[j-1];  
                    array[j-1] = temp;
                }
            }
        }
	    return array;
	}
	
	/**
	 * 选择排序法
	 * 假定左边为有序区,右边为无序区,每次记录右边最小值的下标,找到右侧最小值,放置在左边。
	 */
	static int[] selectSort(int[] array){
	    int temp = 0;
	    int k = 0;
	    for (int i = 0; i < array.length; i++) {
	        k = i;
            for (int j = i; j < array.length; j++) {
                if(array[k]>array[j]){
                    k = j;
                }
            }
            if(i!=k){
                temp = array[i];
                array[i] = array[k];
                array[k] = temp;
            }
        }
	    return array;
	}
}

  

原文地址:https://www.cnblogs.com/caoleiCoding/p/8886888.html