Java实现快速排序
来源:互联网 发布:控制网络与现场总线 编辑:程序博客网 时间:2024/06/15 06:09
本案例需要完成的任务定义如下:实现快速排序算法。
快速排序的算法如下:
1)选定一个值作为“枢轴”,一般选择第一个元素(理想情况下应选择中位值);
2)基于枢轴进行排序,将小于枢轴的数据排在左边,大于枢轴的数据排在右边;
3)一轮排序之后,枢轴即在最终的位置;
4)采用递归,分别对左右两部分进行快速排序,直到每个部分仅有一个元素;
5)排序完成。
快速排序的关键点在于:每次快排仅确定“枢轴”位置。
package quickSortTest;import java.util.Random;public class QuickSortTest {//采用递归进行快速排序public static void quickSort(int arr[], int start, int end){//注意继续排序的前提是start<endif(start < end){int index = partition(arr, start, end);quickSort(arr, start, index-1);quickSort(arr, index+1, end);}}//将数据集分为两部分,返回枢轴所在位置public static int partition(int arr[], int start, int end){//枢轴定义为开始元素int pivot = arr[start];int left = start;int right = end;while(left < right){//如果右边的值大于等于pivot,right指示符左移//如果右边的值小于pivot,则将其换到左边//注意:arr[start]已经赋值给pivot,因此arr[left] = arr[right]不会冲刷掉数据while(left<right && arr[right]>=pivot) right--;arr[left] = arr[right];//如果左边的值小于等于pivot,left指示符右移//如果左边的值大于pivot,则将其换到右边while(left<right && arr[left]<=pivot) left++;arr[right] = arr[left];}//枢轴归位arr[left] = pivot;return left;}public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = new int[100];Random rand =new Random();int length = 100;for(int i=0;i<length;i++){arr[i] = rand.nextInt(100);System.out.print(arr[i]+",");}quickSort(arr,0,length-1);System.out.println();System.out.println("===========after quicksort==========");for(int i=0;i<length;i++){System.out.print(arr[i]+",");}}}
0 0
- java实现快速排序
- 快速排序Java实现
- 快速排序java实现
- 快速排序JAVA实现
- Java实现快速排序
- 快速排序--Java实现
- 快速排序java实现
- java实现快速排序
- java实现快速排序
- Java实现快速排序
- Java实现快速排序
- 快速排序java实现
- 快速排序Java实现
- Java实现快速排序
- java快速排序实现
- JAVA实现快速排序
- java实现快速排序
- java 实现快速排序
- Atitit.css 规范 bem 项目中 CSS 的组织和管理
- 蓝桥杯 错误票据
- mysql数据库的使用与理解( 基于ubuntu 14.0.4 LTS 64位)
- acm_problem_1016
- ZK部署
- Java实现快速排序
- 面向对象设计原则
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
- Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
- Java读写txt或doc文件
- 理解C语言中指针的声明以及复杂声明的语法
- Android Volley的请求封装,实现图片内存缓存(防止OOM),数据磁盘缓存,及清除磁盘缓存
- 你给的,真的是用户想要的么?
- JAVA类库/JAVA API