快速排序-java实现
来源:互联网 发布:网络产品线是干什么的 编辑:程序博客网 时间:2024/06/05 02:16
快速排序:
将数据列表进行分区,然后对分区进行递归式排序,从而完成对整个列表的排序。排序策略:
1.选择一个列表元素作为分区元素;2.分割该列表,使小于分区元素的值位于分区元素左边,大于分区元素的值位于分区元素右边;
3.将上述两个步骤递归用于两个分区;
4.直到一个分区只含有一个元素,其内在就已经排好序了。
例子:
初始:305 65 7 90 120 110 8将90作为分区元素,重新组织列表得到:8 65 7 90 120 110 305
再对分区元素左右两边递归进行快速排序。
Code:
/**Created on 2016年7月10日*Copyright 2016 Yong Cai Limited crop. All Rights Reserved**/package org.cy.sort;public class QuickSort {public static void main(String[] args) {String[] str = {"f","qq","wei","chat","phone","nba"};printArr(quickSort(str));}public static <T extends Comparable<? super T>> T[] quickSort(T[] data){quickSort(data,0,data.length - 1);return data;}public static <T extends Comparable<?super T>> T[] quickSort(T[] data, int minIndex, int maxIndex){if(minIndex < maxIndex){int partitionIndex = partition(data, minIndex, maxIndex);quickSort(data, minIndex, partitionIndex - 1);quickSort(data, partitionIndex + 1, maxIndex);}return data;}public static <T extends Comparable<? super T>> int partition(T[] data, int minIndex, int maxIndex){int left;int right;int mid = (minIndex + maxIndex) / 2;T partitionElem = data[mid];swap(data, mid,minIndex);left = minIndex;right = maxIndex;while(left < right){while(left < right && data[left].compareTo(partitionElem) <= 0){left++;}while(data[right].compareTo(partitionElem) > 0){right--;}if(left < right){swap(data, left, right);}}swap(data, minIndex, right);return right;}public static <T> void swap(T[] data, int pos1, int pos2){T tmp;tmp = data[pos1];data[pos1] = data[pos2];data[pos2] = tmp;}public static <T> void printArr(T[] data){int len = data.length;for(int i = 0; i < len; i++){System.out.print(data[i] + " ");}System.out.println();}}
1 0
- java实现快速排序
- 快速排序Java实现
- 快速排序java实现
- 快速排序JAVA实现
- Java实现快速排序
- 快速排序--Java实现
- 快速排序java实现
- java实现快速排序
- java实现快速排序
- Java实现快速排序
- Java实现快速排序
- 快速排序java实现
- 快速排序Java实现
- Java实现快速排序
- java快速排序实现
- JAVA实现快速排序
- java实现快速排序
- java 实现快速排序
- php实现简单的SQL Builder
- 能ping通Linux但是ssh连不上问题解决方法
- 如何十倍提高你的webpack构建效率
- Linux学习——NFS服务介绍及安装配置方法
- java初始化顺序
- 快速排序-java实现
- poj 2376 Cleaning Shifts 区间覆盖
- 238. Product of Array Except Self
- listView的item中有checkbox,重复被选中的问题
- 我是ATP~
- qnx之resource manager(二)
- Decode Alien Message模拟
- JavaScript异步编程设计快速响应的网络应用
- 安卓应用保活实践(双进程守护)