- /**
- *
- * java 快速排序的算法
- * @param arr 需要排序的数组
- * @param start 需要排序的数组的索引开始位置
- * @param end 需要排序的数组的索引结束位置
- */
- void sort(int[] arr,int start,int end){
- int val,i=start,j=end;
- val=arr[start];
- if(end-start==1){
- if(arr[start]>arr[end])
- {
- arr[start]=arr[start]+arr[end];
- arr[end]=arr[start]-arr[end];
- arr[start]=arr[start]-arr[end];
- }
- return;
- }
- if(end-start>0){
- while(i<j){
- //从后面开始找比val小的,默认排序是升序,所以不允许后面的比前面大
- //如果后面的比前面大 就把前面某个位置的值等于这个值,
- //但是后面的这个值并不会被就此被覆盖,因为下次在前面找到比val大的值就会赋给他
- for (;i<j;j--) {
- if(arr[j]<val)
- {
- arr[i]=arr[j];
- break;
- }
- }
- for (; i<j;i++) {
- if(arr[i]>val)
- {
- arr[j]=arr[i];
- break;
- }
- }
- }
- arr[i]=val;
- sort(arr, start, i);
- sort(arr, i+1, end);
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1311201513982.html
来源: http://www.codesnippet.cn/detail/1311201513982.html