常见的排序算法
Posted Just DO IT by luckygxf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见的排序算法相关的知识,希望对你有一定的参考价值。
常见排序算法有
1. 选择排序
2. 插入排序
3. 冒泡排序
4. 快速排序
5. 归并排序
这里写了5种排序的java demo,还有很多排序,希尔排序,计数排序,堆排序,基数排序等
Sort.java
public class Sort { public static void main(String[] args) { int[] arr = {3, 6, 9, 2, 5, 4}; int[] temp = new int[arr.length]; mergeSort(arr, 0, arr.length - 1, temp); // insertSort(arr); // selectSort(arr); // bubboSort(arr); // quickSort(arr, 0, arr.length - 1); for(int i : arr){ System.out.print(i + ", "); } } public static void mergeSort(int[] array, int start, int end, int[] temp){ if(start < end){ int middle = (end + start) / 2; mergeSort(array, start, middle, temp); mergeSort(array, middle + 1, end, temp); mergeArray(array, start, middle, end, temp); } } private static void mergeArray(int[] array, int start, int middle, int end, int[] temp){ int tempIndex = 0; int s = start; int m = middle + 1; int e = end; while(s <= middle && m <= e){ if(array[s] <= array[m]) temp[tempIndex ++] = array[s ++]; else temp[tempIndex ++] = array[m ++]; } while(s <= middle) temp[tempIndex ++] = array[s ++]; while(m <= e) temp[tempIndex ++] = array[m ++]; for(int i = 0; i < tempIndex; i++) array[start + i] = temp[i]; } public static void insertSort(int[] array){ for(int i = 0; i < array.length; i++){ for(int j = i + 1; j > 0 && j< array.length; j--){ if(array[j] < array[j - 1]){ int temp = array[j]; array[j] = array[j - 1]; array[j - 1] = temp; } } } } public static void selectSort(int[] array){ for(int i = 0; i < array.length; i ++){ int maxIndex = i; for(int j = i + 1; j < array.length; j ++){ maxIndex = array[maxIndex] < array[j] ? j : maxIndex; } if(maxIndex != i){ int temp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = temp; } } } public static void bubboSort(int[] array){ boolean isExchanged = true; for(int i = array.length - 1; i > 0 && isExchanged; i --){ isExchanged = false; for(int j = 0; j < i; j ++){ if(j < array.length - 1 && array[j] > array[j + 1]){ int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; isExchanged = true; } } } } public static void quickSort(int[] array, int l, int r){ if(l < r){ int s = l; int e = r; int pivotValue = array[l]; while(l < r){ while(l < r && array[r] > pivotValue){ r --; } if(l < r) array[l ++] = array[r]; while(l < r && array[l] < pivotValue){ l ++; } if(l < r) array[r --] = array[l]; } //while array[l] = pivotValue; quickSort(array, s, l - 1); quickSort(array, l + 1, e); } } }
以上是关于常见的排序算法的主要内容,如果未能解决你的问题,请参考以下文章