先弄个链接过来,里面的图片很重要:https://blog.csdn.net/yuanyi0501/article/details/78798626
冒泡排序: 相邻依次比较,最大放最后。
private static void bubbleSort(int[] arr) { if(arr==null || arr.length < 2 ){ return; } for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i -1; j++) { // 这里说明为什么需要-1 if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
选择排序:依次取前面的元素和后面的每一个比较,最小放最前。
public class xuanzepaixu { public static void main(String[] args) { int[] arr={43,2,5,4,3,32,1}; for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if(arr[i]>arr[j]){ int temp=arr[j]; arr[j]=arr[i]; arr[i]=temp;
希尔排序:具有步长概念,拿后面和前面比,跨度为步长。
public class Xierpaixu { public static void main(String[] args) { int[] arr={43,2,5,4,3,32}; int h=arr.length; while(h>=1){ h=h/2; for (int i = h; i < arr.length; i++) { for (int j = i; j >=h; j-=h) { if(arr[j]<arr[j-h]){ int temp=arr[j-h]; arr[j-h]=arr[j]; arr[j]=temp; }else{ break; } } } System.out.println(Arrays.toString(arr)); }
快速排序:递归思想。从右边开始,右边找小的,左边找大的。调换。递归。
public class kuaisupaixu { static int[] arr={43,2,5,4,3,32,1}; public static void quickSort(int left,int right){ int i,j,t,temp; if(left>right){ return; } i=left; j=right; temp=arr[left]; while(i!=j){ while(arr[j]>=temp&&i<j) j--; while(arr[i]<=temp&&i<j) i++; if(i<j){ t=arr[j]; arr[j]=arr[i]; arr[i]=t; } } //将基数调换 arr[left]=arr[i]; arr[i]=temp; quickSort(left, i-1); quickSort(i+1, right); } public static void main(String[] args) { quickSort(0, arr.length-1); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } }
}
归并排序:创建新数组,长度两相和。依次做比较,放入时加加。比后有剩余,如法搬移之。
package cn.test;
import java.util.Arrays;
//将两个有序数组排成一个有序数组 public class GuiBingTest { public static void main(String[] args) { int[] a={1,2,3,4,5}; int[] b={10,4,5,6,7}; int[] c=new int[a.length+b.length]; int ai=0; int bi=0; int ci=0; while(ai<a.length&&bi<b.length){ if(a[ai]<b[bi]){ c[ci++]=a[ai++]; }else{ c[ci++]=b[bi++]; } } while(ai<a.length) c[ci++]=a[ai++]; while(bi<b.length) c[ci++]=b[bi++]; System.out.println(Arrays.toString(c)); }
}