12
返回列表 发新帖
楼主: 北美农民
跳转到指定楼层
上一主题 下一主题
收起左侧

[二分/排序/搜索] 【七类排序】之第四种:快速排序

🔗
brilight 2012-12-24 04:59:17 | 只看该作者
全局:
本帖最后由 brilight 于 2012-12-25 10:46 编辑


用 while(1),可減少多次判斷 i==j 的情況

  1. void quickSort(int a[],int n)
  2. {
  3.    int key;
  4.    int i,j;

  5.    if(n<=1) return;

  6.    key=a[n-1];
  7.    i=0;
  8.    j=n-1;
  9.    while(1) {
  10.       for(; i<j && a[i]<=key ; i++);

  11.       if(i==j) break;

  12.       a[j]=a[i];
  13.        j--;

  14.       for(; i<j && a[j]>key ; j--);

  15.       if(i==j) break;

  16.       a[i]=a[j];
  17.       i++;

  18.    }

  19.    a[i]=key;

  20.    quickSort(a,i);
  21.    quickSort(&a[i+1],n-1-i);

  22. }
复制代码
回复

使用道具 举报

🔗
twfx1123 2013-2-21 09:08:04 | 只看该作者
全局:
public static void swap (int A[], int x, int y)
   {
      int temp = A[x];
      A[x] = A[y];
      A[y] = temp;
   }

   // Reorganizes the given list so all elements less than the first are
   // before it and all greater elements are after it.                  
   public static int partition(int A[], int f, int l)
   {
      int pivot = A[f];
      while (f < l)
      {
         if (A[f] == pivot || A[l] == pivot)
         {
            System.out.println("Only distinct integers allowed - C321");
            System.out.println("students should ignore this if statement");
            System.out.exit(0);
         }
         while (A[f] < pivot) f++;
         while (A[l] > pivot) l--;
         swap (A, f, l);
      }
      return f;
   }

   public static void Quicksort(int A[], int f, int l)
   {
      if (f >= l) return;
      int pivot_index = partition(A, f, l);
      Quicksort(A, f, pivot_index);
      Quicksort(A, pivot_index+1, l);
   }

点评

赞java code  发表于 2013-3-3 14:04
回复

使用道具 举报

🔗
twfx1123 2013-3-6 00:26:00 | 只看该作者
全局:
gy21 发表于 2013-2-21 09:08
public static void swap (int A[], int x, int y)
   {
      int temp = A[x];

i am also from UW...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表