实现JAVA快排算法

/** 快排SortTest01 */
public class SortTest01 {

  public static void main(String[] args) {
    /** 1.快排算法中,每一次递归以第一个数为基准数,找到数组中所有比基数小的,再找到所有比基准数大的。小的全部放左边,大的全部放右边,确定基准数的正确位置 */

    /*
     *步骤
     * 1.从右边开始找比基数小的
     * 2.从左边开始找比基数大的 arrys[left]
     * 3.交换两个值的位置
     * 4.红色继续往左找,蓝色继续往右找,直到两个箭头指向同一个索引为止
     * 5.基准数归位
     */

    // 定义数组
    int[] arrys = {6, 5, 3, 9, 1, 8, 10, 4, 7, 2};
    quitSort(arrys, 0, arrys.length - 1);
    System.out.println(Arrays.toString(arrys));
  }

  /**
   * @param arrys 排序数组
   * @param left 最小索引
   * @param right 最大索引
   * @return
   */
  private static void quitSort(int[] arrys, int left, int right) {
    if (right < left) {
      return;
    }
    // 临时存储
    int left0 = left;
    int right0 = right;

    // 计算基准数
    int baseNumber = arrys[left0];

    // 4.红色继续往左找,蓝色继续往右找,直到两个箭头指向同一个索引为止
    while (left != right) {
      // 1.从右边开始找比基数小的
      while (arrys[right] >= baseNumber && left < right) {
        // 没有找到 继续找
        right--;
      }
      // 结束while代表找到了基数小的 此时  arrys[right]
      // 2.从左边开始找比基数大的 arrys[left]
      while (baseNumber >= arrys[left] && left < right) {
        // 没有找到,继续找
        left++;
      }
      // 3.交换两个值的位置
      int temp = arrys[right];
      arrys[right] = arrys[left];
      arrys[left] = temp;
    }
    // 5.基准数归位
    int temp = arrys[left];
    arrys[left] = arrys[left0];
    arrys[left0] = temp;

    quitSort(arrys,left0,left-1);
    quitSort(arrys,left + 1 ,right0);
  }
}

 

//实现冒泡算法

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酆都小菜鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值