快速排序:升序+降序----java实现
快速排序思路:先把第一个元素令为low下标,最后一个为high下标。并把第一个元素令为temp来作为标准元素。以标准元素来调整数组,使比标准元素小的都在标准元素前,比标准元素大的都在标准元素后。这样一次排序后,有两个好处:1.标准元素找到了它自己在该元素中的位置;2.把数组分成了以标准元素为分隔的两个子数组。然后分别对两个子数组采用相同的排序方法。那么明显就递归咯~~~
一:升序快排
package com.sheepmu.text; import java.util.Arrays; /*
* @author sheepmu
*/
public class Sort {
public static void main(String[] args){
int[] arr={60,55,48,37,10,90,84,36};
int len=arr.length; quickSort(arr,0,len-1);
System.out.println("升序快排后----->"+Arrays.toString(arr));
}
public static void quickSort(int[] arr,int low,int high){ int i,j,temp;
i=low;//低端下标
j=high;//高端下标
temp=arr[i];//取第一个元素为标准元素。 while(i<j){//递归出口是 low>=high while(i<j&&temp<=arr[j]) //在数组的后端扫描
j--;//移动后j再减了一个,即在temp前一个咯
if(i<j){
arr[i]=arr[j];
i++;
} while(i<j&&arr[i]<temp) //在数组的左端扫描
i++;
if(i<j){
arr[j]=arr[i];
j--;
} }//while完,即第一盘排序
arr[i]=temp;//把temp值放到它该在的位置。
// System.out.println("第 次排序----->"+Arrays.toString(arr));
if(low<i)
quickSort(arr,low,i-1);//对左端子数组递归
if(i<high)
quickSort(arr,j+1,high);//对右端子数组递归 }
}
二:降序快排
import java.util.Arrays;
/*
* @author sheepmu
*/
public class Sort {
public static void main(String[] args){
int[] arr={60,55,48,37,10,90,84,36};
int len=arr.length;
quickSort(arr,0,len-1);
System.out.println("降序快排后----->"+Arrays.toString(arr));
}
public static void quickSort(int[] arr,int high,int low){
int i,j,temp;
i=high;//高端下标
j=low;//低端下标
temp=arr[i];//取第一个元素为标准元素。 while(i<j){//递归出口是 low>=high
while(i<j&&temp>arr[j])//后端比temp小,符合降序,不管它,low下标前移
j--;//while完后指比temp大的那个
if(i<j){
arr[i]=arr[j];
i++;
}
while(i<j&&temp<arr[i])
i++;
if(i<j){
arr[j]=arr[i];
j--;
}
}//while完,即第一盘排序
arr[i]=temp;//把temp值放到它该在的位置。 if(high<i) //注意,下标值
quickSort(arr,high,i-1);//对左端子数组递归
if(i<low) //注意,下标值
quickSort(arr,i+1,low);//对右端子数组递归 ;对比上面例子,其实此时i和j是同一下标!!!!!!!!!!!!! }
}
快速排序:升序+降序----java实现的更多相关文章
- 【java】实体类中 按照特定的字段 进行升序/降序 排序
背景: 实际页面上 所有的分值都是按照JSON格式存储在一个字符串中 存储在同一个字段中: {"ownPTotal":"10>0","ownO ...
- TreeMap升序|降序排列和按照value进行排序
TreeMap 升序|降序排列 import java.util.Comparator; import java.util.TreeMap; public class Main { public st ...
- js学习篇--数组按升序降序排列
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# List.sort排序详解(多权重,升序降序)
很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序. 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等. ...
- C# List.sort排序(多权重,升序降序)
很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序. 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等. ...
- mysql_DML_select_升序降序去重
select *from wsb limit 5;显示前5行 select *from students LIMIT (m,n) (其中m是指记录开始的index,从0开始,表示第一条记录n是指 ...
- C++员工管理系统(封装+多态+继承+分类化+函数调用+读写文件+指针+升序降序算法等一系列知识结合)
1 C++职工管理系统 2 该项目实现 八个 功能 3 1-增加功能 2-显示功能 3-删除功能 4-修改功能 4 5-查找功能 6-排序功能 7-清空功能 8-退出功能 5 实现多个功能使用了多个C ...
- Java Collection.sort 排序升序, 降序问题
不多说,记住2点, 直接上代码(下面是降序): package mall; import java.util.ArrayList; import java.util.Collections; impo ...
- HTML中实现Table表头点击升序/降序排序
题目:如下图,请实现表格信息的排序功能,当点击表头的属性区域,将表格信息进行排序切换功能,即第一次点击为降序排序,再一次点击进行升序排序. 姓名 力量 敏捷 智力 德鲁伊王 17 24 13 月之骑士 ...
随机推荐
- JavaScript实战
JavaScript之单例实战 一.概述 所谓单例模式,顾名思义即一个类只有一个实例. 所以,当我们创建一个实例时,就必须判断其是否已经存在了这个实例,如果已经存在了这个实例,那么就返回这个已经存在的 ...
- ACM起步要点总结(转哈工大)
首先,我想说的就是,我是一个很普通的ACMer,高中没有参加过任何计算机和数学竞赛的经历,也没有ben那样过人的天资,努力至今也未能取得什么成绩,我之所以写下这篇文章,只是希望给刚进大学或者刚进ACM ...
- 蜗牛—JSONJ学习ava转变
最近,写网站管理员,使用异步通信技术,所使用的方法是JSON数据传输模式 需要以下jar文件 然后,自己写了一点点经常使用代码 Java的List和数组要用JSONArray对象 Map和实体用JSO ...
- ZOJ 1610 间隔染色段树
要长8000仪表板.间染色的范围,问:最后,能看到的颜色,而且颜色一共有段出现 覆盖段 数据对比水 水可太暴力 段树: #include "stdio.h" #include ...
- cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)
基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...
- Urban Dictionary: psd
Urban Dictionary: psd psd Share on twitter Share on facebook Share on more 3 up, 1 down It means Poo ...
- xml(3)--dom4j实现crud操作
1.XML解析技术概述 (1)XML解析方式分为两种:dom和sax dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方 ...
- java中浮点数的比较(double, float)(转)
问题的提出:如果我们编译运行下面这个程序会看到什么? public static void main(String args[]){ System.out.println(0.05+0.01); Sy ...
- Java程序猿笔试面试之String1
1.怎样实现字符串的反转比如:"how are you"--->"you are how" public class InverseString { pu ...
- 【转向Javascript系列】深入理解Generators
随着Javascript语言的发展,ES6规范为我们带来了许多新的内容,其中生成器Generators是一项重要的特性.利用这一特性,我们可以简化迭代器的创建,更加令人兴奋的,是Generators允 ...