Java使用快速排序法对数组进行排序

 1 package com.yzy.test;
 2 
 3 public class Test {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         int[] array = { 43, 64, 21, 6565, 3424, 22, 6523, 345 };
10         ArraySort(array, 0, array.length - 1);
11         for (int i : array) {
12             System.out.print(i + " ");
13         }
14     }
15 
16     // 快速排序方法
17     private static void ArraySort(int[] array, int lowIndex, int highIndex) {
18         int low = lowIndex;
19         int high = highIndex;
20         int mid;
21         if (lowIndex < highIndex) {
22             while (low <= high) {
23                 mid = array[(lowIndex + highIndex) / 2];
24                 while ((low < highIndex) && (array[low] < mid)) {
25                     ++low;
26                 }
27                 while ((high > lowIndex) && (array[high] > mid)) {
28                     --high;
29                 }
30                 if (low <= high) {
31                     wrap(array, low, high);
32                     ++low;
33                     --high;
34                 }
35             }
36             if (low < highIndex) {
37                 ArraySort(array, low, highIndex);
38             }
39             if (high > lowIndex) {
40                 ArraySort(array, lowIndex, high);
41             }
42         }
43 
44     }
45 
46     // 交换数组元素
47     private static void wrap(int[] array, int low, int high) {
48         // TODO Auto-generated method stub
49         int temp = array[low];
50         array[low] = array[high];
51         array[high] = temp;
52     }
53 }

技术要点:快速排序是对气泡排序的一种改进,其排序速度相对较快。基本思想是:通过一趟排序将要排序数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此是整个数据变成有序序列。

转载于:https://www.cnblogs.com/yzyqqhr/p/5767780.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值