常见排序算法的java实现
2014-06-08 10:55
357 查看
冒泡排序
排序思想:越大的元素会经由交换慢慢“浮”到数列的顶端
快速排序
排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
归并排序
排序思想:将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
排序思想:越大的元素会经由交换慢慢“浮”到数列的顶端
import java.util.*; public class bubbleSort{ /** * @冒泡排序 * @author Weixuan * @date 2016/04/12 */ public static void bubblesort(int[] array){ for (int i=0;i<array.length-1;i++){ int temp; for (int j= 0;j<array.length-1-i;j++){ if (array[i]>array[i+1]){//相邻元素对比 temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; } } } } public static void print(String comment,int[] array){ System.out.print(comment+":"); for (int i:array){ System.out.print(i+" "); } System.out.println(); } public static void main(String[] args) { int[] array =new int[]{12,345,3,-23,67,23,8,17,123,43}; print("排序前", array); Arrays.sort(array, 0, array.length); print("排序后", array); } }
快速排序
排序思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
public class quicksort { /** * @快速排序算法 分而治之 递归不断缩小范围 * @author wx * @date 2016/04/12 */ public static int quicksort(int[] array,int low,int high){ //第一个元素作为本次快排的中轴进行对比 int temp = array[low]; while(low<high){ //从右到左 while(low <high && array[high]>=temp){ high--; } array[low] = array[high]; //从左到右 while(low <high && array[low]<=temp){ low++; } array[high] = array[low]; } array[low] = temp; return low; } public static void _quicksort(int[] array,int low,int high){ //进行一次快排,并获取中轴index if(low<high){//迭代的临界条件 int middle = quicksort(array,low,high); _quicksort(array, low, middle-1); _quicksort(array, middle+1,high); } } public static void sort(int[] array){ //数组不能为空 if(array.length>0){ _quicksort(array,0,array.length-1); } } public static void print(String comment,int[] array){ System.out.print(comment+":"); for (int i:array){ System.out.print(i+" "); } System.out.println(); } public static void main(String[] args) { int[] array = new int[]{12,345,3,-23,67,23,8,17,123,43}; print("排序前", array); sort(array); print("排序后", array); } }
归并排序
排序思想:将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
import java.math.*; public class mergeSort { /** * @content 归并排序 两两有序序列进行合并 * @author wx * @date 2016/04/25 */ public static void mergeSort(int[] array,int low,int middle,int high){ //声明临时数组存储排序后的序列 int[] temArr = new int[array.length]; int mid = middle+1; int tempStart = low; int third = low; //每次取左右两部分排序中最小值插入temArr while(low <= middle && mid<=high){ if(array[low]<= array[mid]){ temArr[third++] = array[low++]; } else{ temArr[third++] = array[mid++]; } } //将剩余的有序元素直接插入临时数组中 //左部分序列中剩余元素插入到tempArr中 while(low <= middle){ temArr[third++] = array[low++]; } //右部分序列中剩余元素插入到tempArr中 while(mid <= high){ temArr[third++] = array[mid++]; } //把temArr元素移动到正式表 while(tempStart <=high){ array[tempStart] = temArr[tempStart++]; } } //待排序序列拆分,排序、合并 public static void _mergeSort(int[] array,int low,int high){ if(low < high){ //迭代的临界条件 int middle =((low+high)/2); _mergeSort(array,low,middle); _mergeSort(array, middle+1, high); mergeSort(array,low,middle,high); } } public static void sort(int[] array,int low,int high){ if(array.length>0){ _mergeSort(array,low,high); } } public static void print(String comment,int[] array){ System.out.print(comment+":"); for (int i:array){ System.out.print(i+" "); } System.out.println(); } public static void main(String[] args) { int array[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51}; print("排序前", array); sort(array, 0, array.length-1); print("排序后", array); } }
相关文章推荐
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 常见经典排序算法的java实现
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法及SortUtil
- 常见排序算法的java实现
- 用Java实现几种常见的排序算法
- Java实现几种常见排序算法代码
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法-Java基础-Java-编程开发
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 用Java实现几种常见的排序算法
- 常见排序算法总结(java实现)
- 用Java实现几种常见的排序算法