java九大排序

    科技2024-04-12  91

    先弄个链接过来,里面的图片很重要: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));     }

    }  

     

    Processed: 0.014, SQL: 8