JAVA中数组从小到大排序的2种方法实例
作者:MangGuoGG 时间:2021-10-09 09:46:18
快速排序
快速排序是一种比较高效的排序算法,采用“分而治之”的思想,通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。
public static void quickSort(int[] arry,int left,int right){
//运行判断,如果左边索引大于右边是不合法的,直接return结束此方法
if(left>right){
return;
}
//定义变量保存基准数(第一次进入方法最左边的数字下标为0)
int base = arry[left];
//定义变量i,指向最左边
int i = left;
//定义j ,指向最右边(第一次进入方法最右边数字下标为数组的长度减1)
int j = right;
//当i和j不相遇的时候,再循环中进行检索
while(i!=j){
//先由j从右往左检索比基准数小的,如果检索到比基准数小的就停下。
//如果检索到比基准数大的或者相等的就停下
while(arry[j]>=base && i<j){
j--; //j从右往左检索
}
while(arry[i]<=base && i<j){
i++; //i从左往右检索
}
//代码走到这里i停下,j也停下,然后交换i和j位置的元素
int tem = arry[i];
arry[i] = arry[j];
arry[j] = tem;
}
//如果上面while条件不成立就会跳出这个循环,往下执行
//如果这个条件不成立就说明 i和j相遇了
//如果i和j相遇了,就交换基准数这个元素和相遇位置的元素
//把相遇元素的值赋给基准数这个位置的元素
arry[left] = arry[i];
//把基准数赋给相遇位置的元素
arry[i] = base;
//基准数在这里递归就为了左边的数比它小,右边的数比它大
//排序基准数的左边
quickSort(arry,left,i-1);
//排右边
quickSort(arry,j+1,right);
}
public static void main(String[] args) {
int[] arry = {11,81,71,61,10,42,33,24,99};
System.out.println("arry排序前:"+Arrays.toString(arry));
quickSort(arry,0, arry.length-1);
System.out.println("arry排序后:"+Arrays.toString(arry));
}
冒泡排序
冒泡排序思想:给定一个数组,让数组升序 (降序) 排序。
将数组中相邻元素从前往后依次进行比较,如果前一个元素比后一个元素大,则交换,一趟下来后最大元素就在数组的末尾。
依次从上上述过程,直到数组中所有的元素都排列好。
public static void main(String[] args) {
int[] arr = {18,13,50,15,4,17,18};
System.out.println("arr的排序前:\n18 13 50 15 4 17 18 ");
int temp = 0 ;
for(int i = 0 ;i< arr.length -1; i++){
for(int j = 0; j<arr.length-1-i; j++){
if(arr[j]>arr[j+1]){
//条件成立 交换位置
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("arr排序后:");
for(int i = 0; i<arr.length; i++){
System.out.print(arr[i]+"\t");
}
}
来源:https://blog.csdn.net/m0_56000832/article/details/127791469
标签:java,数组,排序
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SpringBoot跨域Access-Control-Allow-Origin实现解析
2023-11-28 23:04:34
MyBatis 中 ${}和 #{}的正确使用方法(千万不要乱用)
2023-11-29 05:02:37
Hadoop组件简介
2023-08-20 14:07:00
![](https://img.aspxhome.com/file/2023/5/57725_0s.png)
android自动生成dimens适配文件的图文教程详解(无需Java工具类)
2023-07-17 12:12:30
![](https://img.aspxhome.com/file/2023/1/69721_0s.png)
java模拟TCP通信实现客户端上传文件到服务器端
2023-11-26 10:14:49
同时使用@LoadBalanced @RefreshScope注解负载均衡失效分析
2023-12-07 10:59:24
![](https://img.aspxhome.com/file/2023/7/62037_0s.png)
TransmittableThreadLocal解决线程间上下文传递烦恼
2023-11-09 17:09:35
Java实现数据库连接池的方法
2023-11-28 08:57:30
ArrayList详解和使用示例_动力节点Java学院整理
2023-08-05 13:15:41
![](https://img.aspxhome.com/file/2023/0/57840_0s.png)
Spring Boot深入排查 java.lang.ArrayStoreException异常
2023-07-11 16:31:27
jdbc+jsp实现简单员工管理系统
2021-08-31 23:08:15
Java java.sql.Timestamp时间戳案例详解
2023-11-10 13:50:47
Java String不可变性实现原理解析
2023-11-09 23:15:53
一键清除maven仓库中下载失败的jar包的实现方法
2023-08-13 03:43:59
![](https://img.aspxhome.com/file/2023/4/58174_0s.png)
【java 多线程】守护线程与非守护线程的详解
2023-11-29 01:35:29
![](https://img.aspxhome.com/file/2023/9/60179_0s.png)
关于Java8 parallelStream并发安全的深入讲解
2023-11-15 06:37:35
![](https://img.aspxhome.com/file/2023/5/59545_0s.png)
Java实现简单的五子棋小游戏
2023-11-25 07:36:13
![](https://img.aspxhome.com/file/2023/2/59892_0s.jpg)
springboot @Async 注解如何实现方法异步
2023-11-18 18:16:03
JavaApi实现更新删除及读取节点
2023-11-10 07:30:33
![](https://img.aspxhome.com/file/2023/7/59037_0s.png)
新手小心:c语言中强符号与弱符号的使用
2023-06-24 15:16:23