A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冷色 中级黑马   /  2016-2-28 11:12  /  559 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,
将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其
排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

(2)用java实现
  
[java] view plaincopy  
1.  publicclass quickSort {   
2.     
3.    inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34
,15,35,25,53,51};   
4.  publicquickSort(){   
5.      quick(a);   
6.      for(int i=0;i<a.length;i++){   
7.         System.out.println(a);   
8.      }   
9.  }   
10. publicint getMiddle(int[] list, int low, int high) {     
11.             int tmp =list[low];    //数组的第一个作为中轴     
12.             while (low < high){     
13.                 while (low < high&& list[high] >= tmp) {     
14.                    high--;     
15.                 }     
16.   
17.                 list[low] =list[high];   //比中轴小的记录移到低端     
18.                 while (low < high&& list[low] <= tmp) {     
19.                     low++;     
20.                 }     
21.   
22.                 list[high] =list[low];   //比中轴大的记录移到高端     
23.             }     
24.            list[low] = tmp;              //中轴记录到尾     
25.             return low;                   //返回中轴的位置     
26. }   
27.   
28. publicvoid _quickSort(int[] list, int low, int high) {     
29.             if (low < high){     
30.                int middle =getMiddle(list, low, high);  //将list 数组进行一分
为二     
31.                _quickSort(list, low, middle - 1);       //对低字表进行递归排
序     
32.                _quickSort(list,middle + 1, high);       //对高字表进行递归排
序     
33.             }     
34. }   
35.   
36. publicvoid quick(int[] a2) {     
37.             if (a2.length > 0) {    //查看数组是否为空     
38.                 _quickSort(a2,0, a2.length - 1);     
39.             }     
40. }   
41. }   

1 个回复

倒序浏览
很好啊,我没想到,学习了,谢谢.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马