冒泡排序 快速排序

1.1.     交换类排序

1.1.1.       基本思想

交换类排序主要是通过两两比较待排元素的关键字,若发现与排序要求相逆,则“交换”之。

1.1.2.       冒泡排序

void bubble(int[] a) {

           for (int i = 0; i < a.length; i++) {// 先遍历数组

               for (int j = 1; j < a.length - i; j++) {// 遍历未排好序的len-i个元素

                  if (a[j - 1] > a[j]) {// 前后比较

                      int tmp = a[j - 1];

                      a[j - 1] = a[j];

                      a[j] = tmp;

                  }

               }

           }

}

1.1.3.       快速排序

思路:划分步骤:通过枢轴元素 x 将序列一分为二, 且左子序列的元素均小于 x,右子序列的元素均大于 x;治理步骤:递归的对左、右子序列排序;

void quick(int[] a, int low, int high) {

       if (low < high) {

           int part = partition(a,low, high);

           quick(a,low, part - 1);

           quick(a,part + 1, high);

       }

    }

        int partition(int[] a, int low, int high) {

           int tar = a[low];

           while (low < high) {// 循环该段数据

               while (low < high&& tar < a[high])// 先从高端开始查找

                  high--;

               a[low] = a[high];// 交换数据

               while (low < high&& tar > a[low])// 再从低端开始查找

                  low++;

               a[high] = a[low];// 交换数据

           }

           a[low] = tar;// 重新设置枢轴

           return low;// 返回枢轴位置

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值