- //快速排序;
- /*快速排序的算法思想:选定一个枢纽元素,对待排序序列进行分割,
- * 分割之后的序列一个部分小于枢纽元素,一个部分大于枢纽元素,
- * 再对这两个分割好的子序列进行上述的过程。*/
- public static void swap(int a, int b)
- {
- int temp;
- temp= a;
- a= b;
- b= temp;
- }
- public static int partition(int [] arr, int low, int high)
- {
- int pivot= arr [low];// 采用子序列的第一个元素作为枢纽元素;
- while( low< high)
- {
- while(low< high && arr[high]>= pivot)
- //^从后往前,在后半部分中寻找第一个小于枢纽元素的元素;
- {
- --high;
- }
- swap (arr[low ], arr[high] );
- //^将这个比枢纽元素小的元素交换到前半部分;
-
- while(low< high && arr[low]<= pivot)
- //^从前往后,在前半部分中寻找第一个大于枢纽元素的元素;
- {
- ++low;
- }
- swap (arr[low ], arr[high ] );
- //^将这个比枢纽元素大的元素交换到后半部分
-
-
- }
- return low;//返回枢纽元素所在的位置;
- }
- public static void QuickSort(int[] array, int low, int high)
- {
- if(low< high)
- {
- int n= partition (array, low, high );
- QuickSort (array, low, n);
- QuickSort (array, n+1, high );
- }
- }
复制代码 RT 当我在主函数里调用 QuickSort 方法时却出现问题,尝试了几次往low和high里传值都出现了运行结果不正确。
请大家指点一二,先行谢过:)
|
|