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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //快速排序;
  2.         /*快速排序的算法思想:选定一个枢纽元素,对待排序序列进行分割,
  3.          * 分割之后的序列一个部分小于枢纽元素,一个部分大于枢纽元素,
  4.          * 再对这两个分割好的子序列进行上述的过程。*/   
  5.         public static void swap(int a, int b)
  6.         {
  7.                 int temp;
  8.                 temp= a;
  9.                 a= b;
  10.                 b= temp;
  11.         }
  12.         public static int partition(int [] arr, int low, int high)
  13.         {
  14.                 int pivot= arr [low];// 采用子序列的第一个元素作为枢纽元素;
  15.                 while( low< high)
  16.                 {
  17.                         while(low< high && arr[high]>= pivot)
  18.                         //^从后往前,在后半部分中寻找第一个小于枢纽元素的元素;
  19.                         {
  20.                                 --high;
  21.                         }
  22.                         swap (arr[low ], arr[high] );
  23.                         //^将这个比枢纽元素小的元素交换到前半部分;
  24.                        
  25.                         while(low< high && arr[low]<= pivot)
  26.                         //^从前往后,在前半部分中寻找第一个大于枢纽元素的元素;
  27.                         {
  28.                                 ++low;
  29.                         }
  30.                         swap (arr[low ], arr[high ] );
  31.                         //^将这个比枢纽元素大的元素交换到后半部分
  32.                        
  33.                
  34.                 }
  35.         return low;//返回枢纽元素所在的位置;
  36.         }
  37.         public static void QuickSort(int[] array, int low, int high)
  38.         {
  39.                 if(low< high)
  40.                 {
  41.                         int n= partition (array, low, high );
  42.                         QuickSort (array, low, n);
  43.                         QuickSort (array, n+1, high );                       
  44.                 }
  45.         }
复制代码
RT 当我在主函数里调用 QuickSort 方法时却出现问题,尝试了几次往low和high里传值都出现了运行结果不正确。


请大家指点一二,先行谢过:)

0 个回复

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