JAVA中数组从小到大排序的2种方法实例
作者:MangGuoGG 发布时间:2021-10-09 09:46:18
标签:java,数组,排序
快速排序
快速排序是一种比较高效的排序算法,采用“分而治之”的思想,通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。
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设计模式之 * 模式。分享给大家供大家参考,具体如下: * 模式有三个要素——事件源、事件对象、 * 。事件源:顾名思
- 问题:在项目中,当保存数据超过数据库字段列长度限制时,如何解决?一种常见的解决办法是:截串存取。顾名思义,就是对大文本数据按指定长度进行截取
- 异常处理机制已经成为判断一门编程语言是否成熟的标准之一,其对代码的健壮性有很大影响。一直以来异常处理使用不是很得心应手,今天对异常进行了较为
- 一、进行粒子效果生成练习1、生成一个空项目Assets->Import Package->Custom Package->
- 本文实例为大家分享了java实现邮件发送的具体代码,供大家参考,具体内容如下1.使用socket通信功能实现java的邮件传输1.1 什么是
- 面向接口编程接口的定义及功能这里从java介入吧,在java中,接口是一种特殊的类,接口里面的量都是常量,接口的方法只有定义而没有实现,换句
- 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using System
- 我们再用支付宝支付的时候,会从底部弹上来一个对话框,让我们选择支付方式等等,今天我们就来慢慢实现这个功能效果图实现主界面很简单,就是一个按钮
- 开发 Web 应用的思路实现一个简单的 JSP/Servlet。搭建创建 Web 应用工程的环境。创建 Web 应用工程。Web 应用工程的
- 本文实例为大家分享了Android实现类似微信视频接听的具体代码,供大家参考,具体内容如下1、背景需求:业务需要接入视频审核功能,在PC 端
- 将字母全部转换为大写或小写,在C#编程中是一个非常常见的功能。在开发过程中,经常需要验证用户登录,用户在输入用户名时可能不区分大小写,如果我
- 最近在开发的过程当中,对于已有的代码,想将相关类绘制成UML类图,虽然现在有很多UML类图的优秀软件,比如ProcessOn(可视化编辑)、
- using System.Runtime.InteropServices; using System.Text; publicclass F
- 1.静态成员、实例成员1.1定义及说明数据成员:静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个
- 本文实例讲述了C#验证给定字符串形式日期是否合法的方法。分享给大家供大家参考。具体分析如下:这段C#代码用于验证日期的有效性,对于用户输入的
- 写android通知的时候发现Notification的setLatestEventInfo被弃用,于是搜素并整理了一下新的android通
- 本文实例讲述了Java实现数组转字符串及字符串转数组的方法。分享给大家供大家参考,具体如下:字符串转数组使用Java split() 方法s
- 本文实例讲述了Android实现内存中数据保存到sdcard的方法。分享给大家供大家参考,具体如下:public static void w
- 首先在pom文件里引入mqtt的依赖配置<!--mqtt--> <d
- 在C#中,得益于强大的GC机制,使得我们开发程序变得非常简单,很多时候我们只需要管使用,而并不需要关心什么时候释放资源。但是,GC有的时并不