算法和数据结构-选择排序、插入排序及希尔排序 java实现

来源:互联网 发布:叮叮摩卡数据无法打开 编辑:程序博客网 时间:2024/05/22 14:19


参考文章:http://www.cnblogs.com/yangecnu/p/Introduction-Insertion-and-Selection-and-Shell-Sort.html

java代码:


public class Sort {public static void main(String[] args) {int[] array = { 3, 4, 2, 5, 1, 8 };System.out.println("原数组:");printArray(array);System.out.println("选择排序后:小-》大");selectionSort(array);printArray(array);// --------------------System.out.println("选择排序后:大-》小");selectionSort2(array);printArray(array);// --------------------System.out.println("插入排序后:小-》大");insertionSort(array);printArray(array);// --------------------System.out.println("选择排序后:大-》小");shellSort(array);printArray(array);}// 选择排序小-》大public static void selectionSort(int[] array) {int length = array.length;for (int i = 0; i < length; i++) {int min = i;for (int j = i + 1; j < length; j++) {if (array[min] > array[j]) {min = j;}}swap(array, i, min);}}// 选择排序大-》小public static void selectionSort2(int[] array) {int length = array.length;for (int i = 0; i < length; i++) {int max = i;for (int j = i + 1; j < length; j++) {if (array[max] < array[j]) {max = j;}}swap(array, i, max);}}// 插入排序 小-》大public static void insertionSort(int[] array) {int length = array.length;for (int i = 1; i < length; i++) {for (int j = i; j > 0; j--) {if (array[j] < array[j - 1]) {swap(array, j, j - 1);} else {break;}}}}// 希尔排序 大->小public static void shellSort(int[] array) {int n = array.length;int h = 1;while (h < n / 3)h = h * 3 + 1;while (h >= 1) {for (int i = 1; i < n; i++) {for (int j = i; j >= h; j = j - h) {if (array[j] > array[j - h]) {swap(array, j, j - h);}}}h /= 3;}}public static void swap(int[] array, int i, int j) {int t = array[i];array[i] = array[j];array[j] = t;}public static void printArray(int[] array) {for (int a : array) {System.out.print(a + " ");}System.out.println();}}



0 0
原创粉丝点击