Java中Arrays類進行陣列排序
Java中Arrays類實際是一個實現對陣列操作的各種方法的類,可以實現對陣列的排序和搜尋,陣列的比較和對陣列增加元素,陣列的拷貝和資料轉換為字串的功能。今天我們就來說說Arrays.sort()對陣列進行排序的規則。
1.對基本型別的陣列進行排序
(1)Arrays類中的sort()使用的是經過調優的快速排序演算法;
(2)對於int[],double[],char[]等基本資料型別的陣列,Arrays類只提供了預設的升序排列,並沒有提供相應的降序排列方法;
陣列排序函式原型:
static void sort(int[] a) 對指定的int型陣列按數字升序進行排序
static void sort (int[] a,int fromIndex,int toIndex) 對指定int型陣列的指定範圍按數字升序進行排序
例如:
輸出結果:
Arrays.sort()底層實現採用了快速排序。快速排序的思想是:首先選取一個基準,這個基準可以是第一個數字也可以是任意數值,然後用兩個指標left和right分別指向所要排序的陣列的0號位置和length-1號位置,在保證left<right的前提下,先從後向前遍歷尋找第一個小於該基準的數字,進而與left位置的數字進行交換,接下來再從前向後遍歷尋找第一個大於該基準的數字,進而與right所指向的位置的數字進行交換,以此類推,一次遍歷下來我們將會的到一個在基準左邊都是小於基準的數字,在基準右邊都是大於基準的數字。快速排序在一般情況下它的時間複雜度為O(n*logn),但是在我們輸入一組完全有序或者基本有序的陣列的情況下,快速排序演算法將退換為氣泡排序演算法,時間複雜度會變味O(n^2),這種情況也是可以改變的,當我們在選取基準時,我們可以採用三位取中法,即在arr[left],arr[(left+right)/2],arr[right]三者中取中間值作為基準,這樣會避免我們在最壞情況下快速排序演算法效能的降低。
2.對複合資料型別的資料的排序
函式原型:
public static<T> void sort(T[] a,Comparator c) 根據指定比較器產生的順序對指定物件陣列進行排序
public static<T> void sort(T[] a,int fromIndex,int toIndex,Comparator c) 根據指定比較器產生的順序對指定物件陣列的指定範圍進行排序
這兩個排序演算法是經過調優的歸併排序演算法
例如:
輸出結果:
既然這裡用到了Comparator比較器物件,那我們就來說說Java中的兩種比較器Comparable和Comparator
區別:①Comparable位於java.lang包下,Comparator位於java.util包下;
②實現Comparable介面要重寫ComparetTo()方法,實現Comparator介面需要重寫compare()方法;
③Comparable介面將比較程式碼嵌入需要進行比較的類的自身程式碼中,Comparator介面要在一個單獨的類中實現比較;
④如果前期類設計沒有考慮到類的比較問題而沒有實現Comparable介面,後期可以通過Comparator介面來實現演算法進行排序;
⑤Comparable介面強制進行自然排序,Comparator介面不強制自然排序,可以指定排序
相關推薦
Java中Arrays類進行陣列排序
Java中Arrays類實際是一個實現對陣列操作的各種方法的類,可以實現對陣列的排序和搜尋,陣列的比較和對陣列增加元素,陣列的拷貝和資料轉換為字串的功能。今天我們就來說說Arrays.sort()對陣列進行排序的規則。 1.對基本型別的陣列進行排序 (1)Arrays類中的
Java Arrays類進行陣列排序
Java API對Arrays類的說明是:此類包含用來運算元組(比如排序和搜尋)的各種方法。 1.對基本資料型別的陣列的排序 說明:(1)Arrays類中的sort()使用的是“經過調優的快速排序法”; (2)比如int[],double[],char
使用Java Arrays類進行陣列排序
排序演算法,基本的高階語言都有一些提供。C語言有qsort()函式,C++有sort()函式,java語言有Arrays類(不是Array)。用這些排序時,都可以寫自己的排序規則。 Java API對Arrays類的說明是:此類包含用來運算元組(比如排序和搜尋)的各種方法。
java中Arrays類中,binarySearch()方法的返回值問題
.cn pac rom 第一個 mage sea div arch x11 最近在復習Java知識,發現果然不經常使用忘得非常快。。。 看到binarySearch()方法的使用時,發現書上有點錯誤,於是就自己上機實驗了一下,最後總結一下該方法的返回值。 總結:bina
在java中使用TreeMap進行中文排序
最近遇到需要按一個model中不同的列進行排序的問題,查了一下JDK API文件,發現,java中可以排序的工具類和介面共有五個SortedMap 、SortedSet、TreeMap 、TreeSet和Collections,由於我要排序的是一系列model,所以
Java中Arrays類中的binarySearch方法詳解
1.它有很多過載的方法: static int 使用二分搜尋法來搜尋指定的 byte 型陣列,以獲得指定的值。 static int (byte[] a, int fromIndex, int toIndex, byte key) 使用二分搜尋法來搜尋指定的 byte
java中Arrays類的簡單使用
轉載原文:http://blog.csdn.net/object_allen/article/details/41695425 java.util.Arrays類能方便地運算元組,它提供的所有方法都是靜態的。具有以下功能: ² 給陣列賦值:通過fill方法。 ²
java中Arrays類的一些用法
列舉Arrays的一些用法,方便以後查詢使用。 //1.sort排序String[]陣列:升序:從小到大 String[] names = { "Liz", "John", "Eric", "Alan" }; //只排序前兩個 //[John, Liz, Er
Java中Arrays類與Math類
for 數組 四舍五入 ont util ring new === 數組排序 Arrays(數組工具類) Java中已經封裝好的類,提供大量靜態方法供用戶對數組的使用。 導包:import java.util.Arrays 1.Arrays.toStrin
Java Arrays類進行數組排序
character nor ace false cnblogs 基本類 rgb span pre 1.對基本數據類型的數組的排序 說明:(1)Arrays類中的sort()使用的是“經過調優的快速排序法”; (2)比如int[],double[],char[]
Java中Arrays.sort()自定義陣列的升序和降序排序
Java學習中會遇到對陣列進行升序或者降序排序的問題 Java語言提供給我們Array.sort(int [] arr)對陣列進行升序排列 import java.util.Arrays; public class Test1 { public stat
JAVA中Arrays.sort()使用兩種方式(Comparable和Comparator介面)對物件或者引用進行排序
package com.dt.Sort; import java.util.Arrays; import java.util.Comparator; /** * 使用Comparator介面:編寫多個排序方式類實現Comparator介面,並重寫新Comparator介面中的compare()方法 pub
陣列排序 java.util.Arrays類的sort方法
陣列排序: java.util.Arrays類的sort方法可以對 基本型別陣列 和 Comparable型別陣列進行排序. java2核心技術裡沒提到可以對基本型別排序,今天特試了一下. 支援的, 記錄一下. import java.util.*;public class EmployeeSortTes
Java中陣列操作 java.util.Arrays 類常用方法的使用
任何一門程式語言,陣列都是最重要和常用的資料結構之一,但不同的語言對陣列的構造與處理是不盡相同的。 Java中提供了java.util.Arrays 類能方便地運算元組,並且它提供的所有方法都是靜態的。下面介紹一下Arrays類最常用的幾個方法。 1. 陣列排序 Arrays工具類提供了一個sor
在java中RandomAccessFile類的作用:對指定文件可以進行讀寫的操作
cnblogs 讀寫 acc com ces 作用 分享 進行 .com 在java中RandomAccessFile類的作用:對指定文件可以進行讀寫的操作
Java 013 StringBuffer類、Arrays類(常見排序)、包裝類(Integer類)
知識點梳理 心得體會 小知識點 1.執行緒安全與不安全 概念:程式碼所在的程序中有多個執行緒在同時執行,而這些執行緒可能會同時執行這段程式碼。如果每次執行結果和單執行緒執行的結果是一樣的,而且其他的變數的值也和預期的是一樣的,就是執行緒安全的。執行緒安全的程式,多程序需要訪
Java中Arrays.toString ()列印二維陣列及Array陣列的常用操作
1.Java中Arrays.toString () 已知列印一維陣列的API為System.out.println ( Arrays.toString ();,其引數為陣列名或陣列指標,其支援的資料型別有很多,如:int[]、char[]、byte[]等。 import java
設計一個包含一個interface,三個class的Java 程式,用於完成陣列排序排序任務。其中interface中包含一個sort() 方法。第一個class使用氣泡排序法實現interface的
題目:設計一個包含一個interface,三個class的Java 程式,用於完成陣列排序排序任務。其中interface中包含一個sort() 方法。第一個class使用氣泡排序法實現interface的sort()方法;第二個class使用選擇排序法實現interface的sort()方法;
Java中Class類中兩個值得注意的進行型別動態轉換的方法
Java中的Class類有兩個重要的方法:cast()和asSubclass()。這兩個方法都是用於Class類進行執行時(run-time)階段的型別轉換的。下面來看看他們的定義和使用: 第一個方法asSubclass() public <U> Clas
java中對ArrayList進行排序
java中的ArrayList需要通過collections類的sort方法來進行排序 如果想自定義排序方式則需要有類來實現Comparator介面並重寫compare方法 呼叫sort方法時將ArrayList物件與實現Commparator介面的類的物件