实验2——快速排序简单实现

来源:互联网 发布:风撑规格算法 编辑:程序博客网 时间:2024/06/04 17:44

给定一个数组,对这个数组进行快速排序。

package IText;public class QuickSort {public static void main(String[] args){int[] a = {49,38,65,97,76,13,27};quickSort(a,0,a.length-1);for(int x:a)System.out.print(x+" ");}public static void quickSort(int[] arr,int start,int end){int i = start;int j = end ;if((arr==null)||(arr.length==0)) System.out.println("数组为空");while(i<j){while(i<j&&arr[i]<=arr[j]){ //从后往前走,找比arr[0](key的初始值)小的第一个数j--;}//找到这个数后交换int temp = arr[i];arr[i] = arr[j];arr[j] = temp;while(i<j&&arr[i]<arr[j]){ //从前往后走,找比key大的第一个数i++;}//找到后两数交换temp = arr[i];arr[i] = arr[j];arr[j] = temp;}//对key分割出来的左右两个子数组继续快速排序。if(i-start>1)quickSort(arr,start,i-1);if(end-i>1)quickSort(arr,i+1,end);}}



算法的时间复杂度为 O(nlogn) 



0 0
原创粉丝点击