2013.12.14

来源:互联网 发布:java calendar.am pm 编辑:程序博客网 时间:2024/05/22 09:00

* 实现快速排序,一开始没有考虑数组内有值相同元素的情况,出现了无限循环的情况

更改之后,添加 iArr[l]<=pivot (line 20);


基于分治的快速排序@java/DataStructure/unit7

import java.util.*;public class TestQuickSort{        public static void main(String [] args){                Random rand=new Random(47);                int [] iArr=new int [10];                for(int i=0; i<10; i++) iArr[i]=rand.nextInt(100);                System.out.println(Arrays.toString(iArr));                quickSort(0, iArr.length-1, iArr);                System.out.println(Arrays.toString(iArr));        }        public static int partition(int low, int high, int [] iArr){                int l=low, h=high, pivot=iArr[low];                while(l<h){                        while(l<h && iArr[h]>pivot){                                h--;                            }                               iArr[l]=iArr[h];                        while(l<h && iArr[l]<=pivot){                                l++;                            }                               iArr[h]=iArr[l];                }                       iArr[l]=pivot;                return l;        }               public static void quickSort(int low, int high, int [] iArr){                if(low>=high) return;                else{                        int ptr=partition(low, high, iArr);                        quickSort(low, ptr-1, iArr);                        quickSort(ptr+1, high, iArr);                }        }        }


0 0
原创粉丝点击