黑马程序员-java之快速排序的实现
2015-08-19 16:19
483 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
当然,现在java已经不用自己实现排序了。但是我觉得排序算法还是比较有意思的。在这里实现一下快速排序。
public class Paixu {
public static void main(String[] args) {
int[] arr=productArray(); //获得一个由10个随机数组成的数组
System.out.print("排序前: [ "); //打印显示 排序前的数组
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.println(arr[i]+" ]");
break;
}
System.out.print(arr[i]+", ");
}
quick(arr);
//对数组进行排序
System.out.print("排序后: [ "); //打印显示 排序后的数组
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.println(arr[i]+" ]");
break;
}
System.out.print(arr[i]+ ", ");
}
}
public static int[] productArray(){
//产生一个由10个随机数 组成的数组
int x=(int)(Math.random()*100+1);
//产生一个1~100之间的随机数
int[] array=new int[10];
//定义一个容量为10的空数组
for(int i=0;i<10;i++){
//循环产生随机数,并将其赋值给数组的每个元素
array[i]=x;
x=(int)(Math.random()*100+1);
}
return array;
}
public static int getMiddle(int[] arr,int low,int high){
//获得枢轴值的最终位置
int pivot=arr[low]; //将第一个元素设为枢轴值,对数组进行划分
while(low<high){
//循环跳出条件
while(low<high && arr[high]>=pivot)
--high;
arr[low]=arr[high]; //将比枢轴值小的元素移到左边
while(low<high && arr[low]<=pivot)
++low;
arr[high]=arr[low]; //将比枢轴值大的元素移到右边
}
arr[low]=pivot;
return low;
}
public static void quickSort(int[] arr,int low,int high){
//递归调用getMiddle
if(low<high){
int middle=getMiddle(arr,low,high);
quickSort(arr,low,middle-1);
//对左侧数组进行递归
quickSort(arr,middle+1,high);
//对右侧数组进行递归
}
}
public static void quick(int[] arr){
//调用quickSort()实现数组的快速排序
if(arr.length>0){
quickSort(arr,0,arr.length-1);
}
}
}
当然,现在java已经不用自己实现排序了。但是我觉得排序算法还是比较有意思的。在这里实现一下快速排序。
public class Paixu {
public static void main(String[] args) {
int[] arr=productArray(); //获得一个由10个随机数组成的数组
System.out.print("排序前: [ "); //打印显示 排序前的数组
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.println(arr[i]+" ]");
break;
}
System.out.print(arr[i]+", ");
}
quick(arr);
//对数组进行排序
System.out.print("排序后: [ "); //打印显示 排序后的数组
for(int i=0;i<arr.length;i++){
if(i==arr.length-1){
System.out.println(arr[i]+" ]");
break;
}
System.out.print(arr[i]+ ", ");
}
}
public static int[] productArray(){
//产生一个由10个随机数 组成的数组
int x=(int)(Math.random()*100+1);
//产生一个1~100之间的随机数
int[] array=new int[10];
//定义一个容量为10的空数组
for(int i=0;i<10;i++){
//循环产生随机数,并将其赋值给数组的每个元素
array[i]=x;
x=(int)(Math.random()*100+1);
}
return array;
}
public static int getMiddle(int[] arr,int low,int high){
//获得枢轴值的最终位置
int pivot=arr[low]; //将第一个元素设为枢轴值,对数组进行划分
while(low<high){
//循环跳出条件
while(low<high && arr[high]>=pivot)
--high;
arr[low]=arr[high]; //将比枢轴值小的元素移到左边
while(low<high && arr[low]<=pivot)
++low;
arr[high]=arr[low]; //将比枢轴值大的元素移到右边
}
arr[low]=pivot;
return low;
}
public static void quickSort(int[] arr,int low,int high){
//递归调用getMiddle
if(low<high){
int middle=getMiddle(arr,low,high);
quickSort(arr,low,middle-1);
//对左侧数组进行递归
quickSort(arr,middle+1,high);
//对右侧数组进行递归
}
}
public static void quick(int[] arr){
//调用quickSort()实现数组的快速排序
if(arr.length>0){
quickSort(arr,0,arr.length-1);
}
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统