-
2021-04-07 15:11:32
数组排序自带函数java.util.Arrays.sort(arr),arr由小到大已排序
更多相关内容 -
java数组排序函数
2020-06-08 16:20:14排序算法,基本的高级语言都有一些提供。C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array)。...Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法。1.对基本数据类型的数组的排序
(1)Arrays类中的sort()使用的是“经过调优的快速排序法”;
(2)比如int[],double[],char[]等基数据类型的数组,Arrays类之只是提供了默认的升序排列,没有提供相应的降序排列方法。
(3)要对基础类型的数组进行降序排序,需要将这些数组转化为对应的封装类数组,如Integer[],Double[],Character[]等,对这些类数组进行排序。(其实还不如先进行升序排序,自己在转为降序)。
用默认的升序对数组排序
函数原型:
- static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。
- static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。
代码实例
import java.util.Arrays; public class ArraysSort_11 { public static void main(String args[]) { int[] a={1,4,-1,5,0}; Arrays.sort(a); //数组a[]的内容变为{-1,0,1,4,5} for(int i=0;i<a.length;i++) System.out.print(a[i]+" "); } }
2.对复合数据类型的数据的排序
函数原型:
(1)public static void sort(T[] a,Comparator c) 根据指定比较器产生的顺序对指定对象数组进行排序。(2)public static void sort(T[] a,int fromIndex,int toIndex,Comparator c) 根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。
说明:这个两个排序算法是“经过调优的合并排序”算法。
代码实例package com.shuzu; import java.util.Arrays; import java.util.Comparator; public class fuhepaixu { Point[] arr; fuhepaixu(){ arr =new Point[4]; for(int i=0;i<4;i++) { arr[i]=new Point(); } } public static void main(String args[]) { fuhepaixu f =new fuhepaixu(); f.arr[0].x=1; f.arr[1].x=2; f.arr[2].x=0; f.arr[3].x=4; f.arr[0].y=2; f.arr[1].y=3; f.arr[2].y=1; f.arr[3].y=0; Arrays.sort(f.arr,new myComparator()); for(int j=0;j<4;j++) { System.out.println("("+f.arr[j].x+","+f.arr[j].y+")"); } } } class Point{ int x; int y; } class myComparator implements Comparator{ public int compare(Object arg0,Object arg1) { Point t1 =(Point)arg0; Point t2 =(Point)arg1; if(t1.x!=t2.x) { return t1.x>t2.x?1:-1; } else { return t1.y>t2.y?1:-1; } } }
Comparator是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式(strategy design pattern),就是不改变对象自身,而用一个策略对象(strategy object)来改变它的行为。
PS:关于?:公式
a>b?A:B
意思是如果a>b则这个式子的值为A;
否则值为B -
Java数组排序的方法
2021-07-29 11:16:241.快速排序:首先是最简单的Array.sort,直接进行排序: public static void main(String[] args) { int[] arr = {4,3,5,1,7,9,3};...点击运行即可输出已排序的数组数字。 2.部分排序法:使用Array.sort1.快速排序:首先是最简单的Array.sort,直接进行排序:
public static void main(String[] args) { int[] arr = {4,3,5,1,7,9,3}; Arrays.sort(arr); for (int i : arr){ System.out.println(i); }
点击运行即可输出已排序的数组数字。
2.部分排序法:使用Array.sort还可进行选择想要排序的部分数字,如将下角标编号为1~4的数字进行排序,其他数字顺序不变。
public static void main(String[] args) { int[] arr = {4,3,5,1,2,9,3,0}; Arrays.sort(arr,1,4); for (int i = 0;i<arr.length;i++){ System.out.print(arr[i]+","); } }
输出结果为:4,1,3,5,2,9,3,0, 可见仅下标为1~4的数字进行了排序。
3.冒泡排序法:顾名思义,从下到上,两两进行比较,越小的越往上,从而形成由小到大的排序。
public static void bubble(int[] arr){ int temp; //根据角标进行比较, for(int i = 0; i<arr.length; i++){ //j是数组的最后一个角标 for (int j = arr.length-1; j > i; j--) { if (arr[j] < arr[j - 1]) { //从后往前进行比较,小数往前,一轮之后最小数就在最前面了 temp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = temp; } } } } public static void main(String[] args) { int[] arr = {3,22,5,3,66,2,9}; bubble(arr); //使用foreach循环输出 for(int x : arr){ System.out.println(x); } //使用字符串表达形式输出,输出形式更为直观 System.out.println(Arrays.toString(arr)); }
-
JAVA入门学习 —数组排序的方法
2022-04-20 13:26:09冒泡排序(Bubble Sort)2.选择排序(Select Sort)3.插入排序(Insert Sort)4.希尔排序(Shell Sort)5.快速排序(Quick Sort)6.归并排序(Merge Sort)7.堆排序(Heap Sort)8.计数排序 (Count Sort)9.桶排序(Bucket Sort)10....目录
1.冒泡排序(Bubble Sort)
冒泡排序的思想:
从序列的一端开始向另一端冒泡,可以从左往右冒泡,也可以从右往左冒泡,依次比较相邻的两个数的大小(比大还是比小看要求)。
import java.util.Arrays; //冒泡排序 public class BubbleSort_01 { public static void main(String[] args) { int a[]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}; for (int i = 0; i < a.length-1; i++) { for (int j = 0; j < a.length-1-i; j++) { if (a[j]>a[j+1]) { int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } System.out.println(Arrays.toString(a)); } }
2.选择排序(Select Sort)
选择排序的思想:
首先,找到数组中最小(最大)的元素,拎出来,将它和数组的第一个元素交换位置,第二步,在剩下的元素中继续寻找最小(最大)的元素,拎出来,和数组的第二个元素交换位置,如此循环,知道整个数组排序完成。
import java.util.Arrays; //选择排序:先定义一个记录最小元素的下标,然后循环一次后面的,找到最小的元素,最后将他放到前面排序好的序列。 public class SelectSort_02 { public static void main(String[] args) { //标记第一个为待比较的数 //然后从后面遍历与第一个数比较 //如果小,就交换最小值 //保存最小元素的下标 //找到最小值后,将最小的值放到第一的位置,进行下一遍循环 int a[] = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48}; for (int i = 0; i < a.length - 1; i++) { int index = i; for (int j = i + 1; j < a.length; j++) { if (a[j] < a[index]) { index = j; } } int temp = a[index]; a[index] = a[i]; a[i] = temp; } System.out.println(Arrays.toString(a)); } }
3.插入排序(Insert Sort)
插入排序的思想:
和我们打扑克牌的时候一样,从牌堆里一张一张摸起来的牌都是乱序的,我们会把摸起来的牌插入到左手中合适的位置,让左手中的牌时刻保持一个有序的状态。
那如果我们不是从牌堆中摸牌,而是左手里面初始化就是一堆乱牌呢?一样的套路,我们把牌往手的右边挪一挪,把手的左边空出一点位置来,然后再乱牌中抽一张出来,插入到左边,再抽一张出来,插入到左边,每次插入都插入到适合的位置时刻保持左手里的牌是有序的,知道右边的牌抽完,则排序完毕。
在第一轮中,从未排序区域随机拿出一个数字,既然是随机,那我们就获取第一个,然后插入到已排序区域中,此时已排序区域是空,那么就不做比较,默认自身已经是有序的了(在写代码时候,从下标为1的元素开始即可)。
import java.util.Arrays; //插入排序:定义一个待插入的数,再定义一个待插入数的前一个数的下标,然后拿待插入数与前面的数组一一比较,最后交换。 public static void main(String[] args) { //长度不减1,是因为要留多一个位置方便插入数 //定义待插入的数 //找到待插入数的前一个数的下标 //拿a[i]与a[i-1]的前面数组比较 int a[] = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48}; for (int i = 0; i < a.length; i++) { int insertValue = a[i]; int insertIndex = i - 1; while (insertIndex >= 0 && insertValue < a[insertIndex]) { a[insertIndex + 1] = a[insertIndex]; insertIndex--; } a[insertIndex + 1] = insertValue; } System.out.println(Arrays.toString(a)); } }
4.希尔排序(Shell Sort)
希尔排序的思想:
首先它把较大的数据集合分割成若干个小组(逻辑上分组),然后对每一个小组分别进行插入排序。
增量这里可以有所不同,比如有10个数要进行排序,你设置的增量是4,那么a[0],a[4]与a[8],a[1],a[6]与a[9]是一组,分组进行插入排序,之后再缩小增量,再进行插入排序。
import java.util.Arrays; //希尔排序:插入排序的升级 public class ShellSort_04 { //将整个数组分为若干个子数组 //遍历各组的元素 //交换元素 int a[] = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48}; for (int gap = a.length / 2; gap > 0; gap = gap / 2) { for (int i = gap; i < a.length; i++) { for (int j = i - gap; j >= 0; j = j - gap) { if (a[j] > a[j + gap]) { int temp = a[j]; a[j] = a[j + gap]; a[j + gap] = temp; } } } } System.out.println(Arrays.toString(a)); } }
5.快速排序(Quick Sort)
6.归并排序(Merge Sort)
7.堆排序(Heap Sort)
8.计数排序 (Count Sort)
9.桶排序(Bucket Sort)
10.基数排序(Raix Sort)
-
java数组的基数排序及时间复杂度
2021-12-07 22:01:45基数排序:先通过他们的个位数进行排序,再把个位排好的放到新数组中,再对他们的十位数进行排序(此时排完个位数都放在同一区域内并且个位数已经排好),再对他们的百位进行排序,一直排到对数组里最大的的位数进行... -
javascript 数组排序函数
2021-01-21 13:15:30如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一: 负值,如果所传递的第一个参数比第二个参数小。 零,如果两个参数相等。 正值,如果第一个参数比第二个参数大。 以上的方法在一维的排序... -
javascript 数组排序函数sort和reverse使用介绍
2020-12-04 05:58:22首先我们先说一下reverse方法。 reverse 方法将一个 Array 对象中的元素位置进行反转。... 如果数组中只包含数字,那么数字将降序排列,如果数组中还包含其他类型,就将数组反转并返回数组。 sort 方法 返回 -
JAVA中的排序函数
2020-09-23 16:53:38JAVA中的排序函数包括java.util.Arrays中的Arrays.sort();java.util.Collections中的Collections.sort() -
Java数组排序:Java sort()方法
2019-07-05 23:03:19在 Java 中实现数组排序的方式很多,除了利用 Arrays 类的 sort() 方法外,还可以编写自定义方法来实现自己的排序算法。本文介绍如何使用 Arrays 类提供的 sort() 方法来对数组进行排序。 使用 java.util.Arrays 类... -
java数组的插入排序以及时间复杂度
2021-12-07 14:41:53插入排序的思想是把前面的排好依次往下进行遍历,发现比最后一个数小的把它插入排好序的最后一个数的前面,此时排好的数组可能已经不再有序,就对它进行维护,以此重复上述操作 具体步骤:定义一个指针i,再定义一个... -
java排序函数
2021-03-09 01:36:387. 数组排序 函数:Arrays.sort(); [java] view pl...在 caller 的实例中,将实现了 A 接口的对象的引用传给 caller,后调用 call()方法; 注意:步骤 3 中亦可以使用 Caller 的构造函数直接实现。 JAVA 排序的 ......... -
JavaScript 数组排序函数sort()的使用
2021-12-27 13:16:291.纯字符串数组排序 let myArray = ["people","person","apple","ziv"] console.log(myArray.sort()) // 打印结果[ 'apple', 'people', 'person', 'ziv' ] 其对于字符串数组直接按照字典顺序进行排序。注意:大... -
PHP数组排序函数
2021-03-24 11:34:01在使用 PHP 进行编程时,有时需要对数组进行排序,通常我们使用的对数组进行排序的方法有冒泡排序、快速排序等等。...通过排序可以对数据进行合理的管理,提高...PHP 中常用的数组排序函数如下表所示:函数说明sort()对... -
java字符串数组排序
2022-05-05 11:31:57对String类型的字符串数组进行排序 比如: String s[]={"asf","bad","asds","assd"} 这里 s[0]="asf" s[1]="bab" .... 排序: String s[]={"asf","bad","asds","assd"}; n=s.length; Arrays.sort(s,0,n)... -
java数组的排序 对象数组的排序 Comoarable接口实现 compareTo函数实现
2021-02-27 19:16:30/*java 中数组的排序 对象数组 的排序基本类型的数组可以直接排序但是 引用类型的数组 不能直接排序首先要实现 Comparable 接口并且重载compareTo方法 这个方法在java.until包中的 Arrays 类 的 binarySearch() sort... -
Java:数组排序输出
2021-11-20 09:57:54问题:编写一个程序,在其中建立一个有10个整数的数组,运行后从键盘输入10个数,然后排序(升序)后输出 代码: package com.company; import java.util.Scanner; public class Main { public static void ... -
数组排序sort()
2021-03-05 18:24:55[java]代码库数组排序sort()sort()方法使数组中的元素按照一定的顺序排列。语法:arrayObject.sort(方法函数)参数说明:1.如果不指定,则按unicode码顺序排列。2.如果指定,则按所指定的排序方法排序。myArray.sort... -
java 数组排序 Arrays.sort()用法
2020-11-27 14:23:14java中自带的Arrays.sort()函数可以免去很多时候所需要的排序方法时间。 Arrays.sort()默认按照从小到大排序(数组), 如果是字符,则是按照字典序排序 例: public class Test { public static void main(String[] ... -
详述Java中sort排序函数
2022-06-04 19:08:11手写一个排序算法的效率是很慢的,当然这也不利于我们在比赛或者工程中的实战,如今几乎每个语言的标准库中都有排序算法...通常,在看有关算法书籍的时候,会发现都说有关数组的排序算法,而且使用的都是随机访问,但是 -
Java一维数组的排序
2022-02-18 17:39:32选择排序 只使用一个主函数 package test2; import java.util.*; public class Test0测试 ... System.out.println("请输入要排序的数组:"); Scanner in=new Scanner(System.in); for(int i=0;i<arr.length; -
Java实现数组反转翻转的方法实例
2020-08-30 20:43:58本篇文章主要介绍了Java实现数组反转翻转的方法实例,详细的介绍了3种实现方法,有兴趣的可以了解一下。 -
Java实现数组去除重复数据的方法详解
2020-08-29 11:58:50主要介绍了Java实现数组去除重复数据的方法,结合实例形式详细分析了java数组去除重复的几种常用方法、实现原理与相关注意事项,需要的朋友可以参考下 -
Java:对乱序数组进行冒泡排序,直接选择排序,导入包排序方法。
2020-08-22 16:58:171、在类里创建冒泡排序方法 2、遍历数组输出数组元素 3、创建初始值,创建类对象,使用排序方法 -
Java自带的排序函数归纳总结
2022-02-11 00:21:45Java中强大的jdk给我们提供了许多现成能使用的排序算法 ...... -
Java实现数组排序
2020-12-01 10:31:45选择排序法即是先将第一个数据分别与右侧其他数据依次比较,当第一个数据较大时,对调两数据位置,最终第一个位置的数据将是数组元素的最小值;再对第二个数据分别与右侧其他数据依次比较,当第二个数据较大时,对调... -
Java数组逆向排序(从大到小排序)
2021-06-14 19:52:01因为java中的Arrays.sort()方法只可以对数组从小到大排序,如果想要从大到小排序,必须从写此方法的比较器。 具体方法见代码: import java.util.*; public class Main { public static void main(String[] ... -
java的arrays数组排序示例分享
2020-09-04 14:40:48排序算法,基本的高级语言都有一些提供。C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array)。用这些排序时,都可以写自己的排序规则 -
Java中数组排序函数
2013-11-11 14:41:08import java.util.Arrays; static int [] a = new int [15]; Arrays.sort(a, 0, n); //数组排序算法 -
Java如何对类对象数组排序
2021-08-03 22:06:01用于基本数据类型的数组排序,用到的是Arrays类下的重载静态方法sort( ); 只需要调用sort方法就行,传入数组名为实参。 例如,对整型数组进行排序。 public class ArraysTest { public static void main... -
java实现6种字符串数组的排序(String array sort)
2020-08-25 03:55:27主要介绍了java实现6种字符串数组的排序(String array sort),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧