快速排序
快速排序
麦金新一 发表于2年前
快速排序
  • 发表于 2年前
  • 阅读 15
  • 收藏 1
  • 点赞 1
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

"快速排序"的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,选择一个元素作为"基准"(pivot)。

(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。

(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
    
 public static void quicksort(int[] numbers, int start, int end) {
        if (start < end) {
            int pivot = numbers[(start+end)/2];// 选定的基准值(中间数值作为基准值)
            int temp; // 记录临时中间值
            int left = start, right = end;
            while (left <= right) {
                while (numbers[left] < pivot && left < end) {
                    left++;
                }
                while (numbers[right] > pivot && right > start) {
                    right--;
                }
                if (left <= right) {
                    temp = numbers[left];
                    numbers[left] = numbers[right];
                    numbers[right] = temp;
                    left++;
                    right--;
                }
            }
            if (start < right) {
                quicksort(numbers, start, right);
            }
            if (end > left) {
                quicksort(numbers, left, end);
            }
        }
    }   


public static void main(String[] args) {
        int[] numbers=new int[]{1,34,27,78,23,12,98,67,45,54,32,5,59,33,2,87,46};
        quickSort(numbers,0,numbers.length-1);
        for(int n:numbers){
            System.out.println(n);
        }    
    }

共有 人打赏支持
粉丝 0
博文 7
码字总数 4887
×
麦金新一
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: