二、快速 排序基本算法
1、基本思想:首先选一个基准点,将待排序记录划分为独立的两部分,左侧记录的关键码均小于等于轴值,右侧记录的关键码均大于等于轴值,之后再分别对这两个部分重复上述过程,直到整个序列有序为止。
2、代码如下:
class QuickSort{ public static void main(String[] args){ int[] arr={49,38,65,97,76,13,27,49}; quickSort(arr); print(arr); } public static void print(int[] arr){ for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } System.out.println(); } public static void quickSort(int[] arr){ sort(arr,0,arr.length-1); } public static void sort(int[] arr,int low,int high){ if(low>high){ return; } int i=low; int j=high; int index=arr[i]; //用第一个值作为基准值 while(i<j){ while(i<j&&arr[j]>=index)j--;//如果没有比关键值小的,比较下一个, //直到有比关键值小的交换位置,然后又从前往后比较 if(arr[j]<index){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } while(i<j&&arr[i]<=index)i++; if(arr[i]>index){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } sort(arr,low,i-1); //对低子表进行递归排序 sort(arr,i+1,high); // 对高子表进行递归排序 } }