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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

学习排序,写了快速排序和堆排序的函数。
Sort.java
  1. package sort;
  2. import java.lang.*;
  3. /**
  4. *
  5. * @author Firwood
  6. */
  7. public class Sort {

  8.     /**
  9.      * @param args the command line arguments
  10.      */
  11.     public static void main(String[] args) {
  12.         // TODO code application logic here
  13.         System.out.println("This is Test");

  14.         Quicks h = new Quicks(10);
  15.         for(int i=0;i<h.length;i++) {
  16.                 h.a[i] = (int)(Math.random()*100);               
  17.         }
  18.         h.Output();
  19.         System.out.println("------------------------------------------------------");
  20.         //h.Build();
  21.         h.sort();
  22.         h.Output();
  23.     }
  24. }
复制代码
Quicks.java
  1. package sort;
  2. public class Quicks {
  3.         //
  4.         int[] a;
  5.         int length;
  6.         Quicks() {//默认生成20个元素的数组来存储数字
  7.             a = new int[20];
  8.             length = 20;
  9.         }
  10.         Quicks(int x) {
  11.             a = new int[x];
  12.             length = x;
  13.         }
  14.         int Part(int p, int r) {
  15.             int x = a[r];
  16.             int i = p - 1;
  17.             for( int j = p; j <= r-1; j++) {
  18.                 if( a[j] <= x ) {
  19.                     i++;
  20.                     int temp = a[i];
  21.                     a[i] = a[j];
  22.                     a[j] = temp;
  23.                 }
  24.             }
  25.             int tem = a[i+1];
  26.             a[i+1] = a[r];
  27.             a[r] = tem;
  28.             return i+1;
  29.         }
  30.         int Quicksort(int p, int r) {
  31.             if( p < r ) {
  32.                 int q = Part(p,r);
  33.                 Quicksort(p,q-1);//排序前一部分
  34.                 Quicksort(q+1,r);//排序后一部分
  35.             }
  36.             return 0;
  37.         }
  38.         int sort() {
  39.             Quicksort(0,length-1);
  40.             return 0;
  41.         }
  42.         int Output() {//输出数组的内容
  43.                 for(int i=0;i<length;i++) {
  44.                         System.out.printf("%d ",a[i]);
  45.                 }
  46.                 System.out.printf("\n");
  47.                 return 0;
  48.         }
  49. }
复制代码
Heapt.java
  1. package sort;
  2. import java.lang.*;

  3. public class Heapt {
  4.         int[] a;
  5.         int length;
  6.         Heapt() {
  7.                 a = new int[20];
  8.                 length = 20;
  9.         }
  10.         Heapt(int n) {
  11.                 a = new int[n];
  12.                 length = n;
  13.         }
  14.        
  15.         int left(int i) {
  16.                 return 2*i+1;
  17.         }
  18.         int right(int i) {
  19.                 return 2*i+2;
  20.         }
  21.         int parent(int i) {
  22.                 return ((i+1)/2-1);
  23.         }
  24.         int exchange(int x,int y) {
  25.                 int temp = a[x];
  26.                 a[x] = a[y];
  27.                 a[y] = temp;
  28.                 return 0;
  29.         }
  30.         int Max_Heap(int i,int len) {
  31.                 int r = right(i);
  32.                 int l = left(i);
  33.                 int p = parent(i);
  34.                
  35.                 int largest = i;
  36.                 if(l < len && a[l] > a[largest]) largest = l;
  37.                 else largest = i;
  38.                
  39.                 if(r < len && a[r] > a[largest]) largest = r;
  40.                
  41.                 if(largest != i) {
  42.                         exchange(i,largest);
  43.                         Max_Heap(largest,len);
  44.                 }
  45.                
  46.                 return 0;
  47.         }
  48.         int Build() {
  49.                 for(int i=(length)/2; i>=0;i--) {
  50.                         Max_Heap(i,length);
  51.                 }
  52.                 return 0;
  53.         }
  54.         int sort() {
  55.                 Build();
  56.                 int tt = length;
  57.                 while(tt > 1) {
  58.                         tt--;
  59.                         exchange(0,tt);
  60.                         Max_Heap(0,tt);
  61.                 }
  62.                 return 0;
  63.         }
  64.         int Output() {
  65.                 for(int i=0;i<length;i++) {
  66.                         System.out.printf("%d ",a[i]);
  67.                 }
  68.                 System.out.printf("\n");
  69.                 return 0;
  70.         }
  71.        
  72. }
复制代码





0 个回复

您需要登录后才可以回帖 登录 | 加入黑马