小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

算法設計與分析 2.8 快速排序

 shaobin0604@163.com 2006-09-25
/**********************************************************
快速排序的運行時間與劃分是否對稱有關。
1.其最壞情況是在劃分的過程中產(chǎn)生兩個區(qū)域分別包含 1 個和
n - 1 個元素的時候。由于partition的計算時間為 O(n) , 所以
如果算法partition每次都出現(xiàn)這種不對稱的劃分,復雜度為O(n^2)。

2.最好和平均都是 O(nlogn) 。
**********************************************************/
import java.util.Arrays;
public class QuickSort {
 public static void quickSort(int[] a, int p, int r) {
  if (p < r) {
      int q = partition(a, p, r);
   quickSort(a, p, q - 1);    //對左半段排序
   quickSort(a, q + 1, r);    //對右半段排序
  }
 }

 private static void swap(int[] a, int i, int j) {
  int temp = a[i];
  a[i] = a[j];
  a[j] = temp;
 }

 private static int partition(int[] a, int p, int r) {
  int u = a[p];       //以第一個元素為基準
  int i = p + 1;
  int j = r;
  for (; ; ) {       //將小于u的元素交換到左邊,將大于u的元素交換到右邊
   while (a[i] < u) {
       i++;
   }

   while (a[j] > u) {
       j--;
   }
        
   if (i >= j) {
       break;
   }
   swap(a, i, j);
  }
  a[p] = a[j];
  a[j] = u;
  return j;
 }

 public static void main(String[] args) {
  int[] a = {3, 4, 1, 5, 9, 3, 2, 8, 10};
  quickSort(a, 0, a.length - 1);
  System.out.println(Arrays.toString(a));
 }
}

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多