码迷,mamicode.com
首页 > 其他好文 > 详细

快速排序和堆排序

时间:2014-09-04 18:51:19      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   art   div   sp   

 

 

 

 

 1 //快速排序    
 2 public static  <T extends Comparable> int partion(T a[],int low,int high)
 3     {
 4         T pivo=a[low];
 5         while(low<high)
 6         {
 7             while(low<high&&pivo.compareTo(a[high])<=0)
 8             {
 9                 high--;
10             }
11             a[low]=a[high];
12             while(low<high&&pivo.compareTo(a[low])>=0)
13             {
14                 low++;
15             }
16             a[high]=a[low];
17         }
18         a[low]=pivo;
19         return low;
20     }
21     public static <T extends Comparable> void QSort(T a[],int low,int high)
22     {
23         if(low<high)
24         {
25             int pivoLoc=partion(a, low, high);
26             QSort(a,low,pivoLoc-1);
27             QSort(a,pivoLoc+1,high);
28             
29         }
30     }

 

 1 //堆排序
 2 public static void ajustHeap(int a[],int s,int size)
 3     {
 4         int temp=a[s];
 5         for(int j=2*s;j<size;j++)
 6         {
 7             if(j+1<size&&a[j]<a[j+1])
 8             {
 9                 j++;
10             }
11             if(a[j]>temp)
12             {
13                 a[s]=a[j];
14                 s=j;
15             }
16         }
17         a[s]=temp;
18     }
19     public static void heapSort(int a[])
20     {
21         // build heap
22         for(int i=a.length/2;i>=0;i--)
23             ajustHeap(a, i,a.length);
24         for(int i=a.length-1;i>0;i--)
25         {
26             ajustHeap(a, 0,i);
27             int temp=a[i];
28             a[i]=a[0];
29             a[0]=temp;
30         }
31     }

 

 

 

 1 //测试
 2 public static void main(String[] args) {
 3         Integer arr[]={3,1,6,2,8,89,4,4,6,9};
 4         int a[]={3,1,6,2,8,89,4,4,6,9};
 5         System.out.println("qsort sort");
 6         QSort(arr,0,arr.length-1);
 7         for(Integer i:arr)
 8             System.out.print(i+" ");
 9         System.out.println("heap sort");
10         heapSort(a);
11         for(Integer i:a)
12             System.out.print(i+" ");
13     }

 

快速排序和堆排序

标签:style   blog   color   io   ar   for   art   div   sp   

原文地址:http://www.cnblogs.com/friends-wf/p/3956528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!