冒泡&快速排序

package sort;
import java.util.Arrays;
/**

  • @Description 选择&冒泡&快速排序

  • @Author haifeng.cao

  • @Date 2022/3/29 18:27
    */
    public class BubblingSort {

    public static void main(String[] args) {
    int dataA[] = new int[]{ 2,12,4,6,78,45,0,5};
    //选择排序
    dataA = selectionSort(dataA); //冒泡排序
    System.out.println("选择排序: "+Arrays.toString(dataA));

     int dataB[] = new int[]{ 2,12,4,6,78,45,0,5};
     dataB = bubblingSort(dataB);  //冒泡排序
     System.out.println("冒泡排序: "+Arrays.toString(dataB));
    
     int dataC[] = new int[]{ 2,12,4,6,78,45,0,5};
     fastSort(dataC,0,dataC.length - 1);  //快速排序 (递归)
     System.out.println("快速排序: "+Arrays.toString(dataC));
    

    }

    /**

    • @Description 选择排序
    • @Author haifeng.cao
    • @Date 2022/3/29 18:52
    • @params [data]
    • @return int[]
      */
      public static int[] selectionSort(int data[]) {
      //从左到右按照小到大进行
      for (int i = 0; i < data.length; i++) {
      for (int j = i+1; j < data.length; j++) {
      if(data[i] > data[j]){ //交换位置
      data[i] = data[i] + data[j];
      data[j] = data[i] - data[j];
      data[i] = data[i] - data[j];
      }
      }
      }
      return data;
      }

    /**

    • @Description 冒泡排序
    • @Author haifeng.cao
    • @Date 2022/3/29 18:28
    • @params [data]
    • @return int[]
      */
      public static int[] bubblingSort(int data[]){
      int n = data.length;
      for (int i = 0; i < n-1 ; i++) {
      for (int j = 0; j < n-1; j++) {
      if(data[j] > data[j+1]){ //交换值
      data[j] = data[j] + data[j+1];
      data[j+1] = data[j] - data[j+1];
      data[j] = data[j] - data[j+1];
      }
      }
      }
      return data;
      }

    /**

    • @Description 快速排序
    • @Author haifeng.cao
    • @Date 2022/3/29 18:28
    • @params [data, left, right]
    • @return void
      */
      public static void fastSort(int data[],int left,int right){
      int base = data[left]; //取一个基准数
      int ll = left;
      int rr = right;
      while (ll < rr) {
      //从后往前找比基准大的数
      while (ll < rr && data[rr] >= base){
      rr--;
      }
      if(ll < rr){ //交换值
      data[rr] = data[rr] + data[ll];
      data[ll] = data[rr] - data[ll];
      data[rr] = data[rr] - data[ll];
      ll++;
      }
      //从后往前找比基准小的数
      while (ll < rr && data[ll] <= base){
      ll++;
      }
      if(ll < rr){ //交换值
      data[rr] = data[rr] + data[ll];
      data[ll] = data[rr] - data[ll];
      data[rr] = data[rr] - data[ll];
      rr--;
      }
      }
      //递归左边
      if(left < ll) fastSort(data,left,ll-1);
      //递归右边
      if(right > ll) fastSort(data,ll+1,right);
      }
      }

posted on 2022-03-29 17:44  时间贩卖机  阅读(55)  评论(1)    收藏  举报

导航