java對數組進行排序
㈠ java數組排序 幾種排序方法詳細一點
JAVA中在運用數組進行排序功能時,一般有四種方法:快速排序法、冒泡法、選擇排序法、插入排序法。
快速排序法主要是運用了Arrays中的一個方法Arrays.sort()實現。
冒泡法是運用遍歷數組進行比較,通過不斷的比較將最小值或者最大值一個一個的遍歷出來。
選擇排序法是將數組的第一個數據作為最大或者最小的值,然後通過比較循環,輸出有序的數組。
插入排序是選擇一個數組中的數據,通過不斷的插入比較最後進行排序。下面我就將他們的實現方法一一詳解供大家參考。
<1>利用Arrays帶有的排序方法快速排序
publicclassTest2{
publicstaticvoidmain(String[]args){
int[]a={5,4,2,4,9,1};
Arrays.sort(a);//進行排序
for(inti:a){
System.out.print(i);
}
}
}
<2>冒泡排序演算法
publicstaticint[]bubbleSort(int[]args){//冒泡排序演算法
for(inti=0;i<args.length-1;i++){
for(intj=i+1;j<args.length;j++){
if(args[i]>args[j]){
inttemp=args[i];
args[i]=args[j];
args[j]=temp;
}
}
}
returnargs;
}
<3>選擇排序演算法
publicstaticint[]selectSort(int[]args){//選擇排序演算法
for(inti=0;i<args.length-1;i++){
intmin=i;
for(intj=i+1;j<args.length;j++){
if(args[min]>args[j]){
min=j;
}
}
if(min!=i){
inttemp=args[i];
args[i]=args[min];
args[min]=temp;
}
}
returnargs;
}
<4>插入排序演算法
publicstaticint[]insertSort(int[]args){//插入排序演算法
for(inti=1;i<args.length;i++){
for(intj=i;j>0;j--){
if(args[j]<args[j-1]){
inttemp=args[j-1];
args[j-1]=args[j];
args[j]=temp;
}elsebreak;
}
}
returnargs;
}
㈡ java中如何對數組和集合進行排序
java中對集合排序,可以使用Collections.sort來進行排序,可以對中文、字母、數字進行排序,當比較的是對象時候,讓該類實現comparable介面,示例如下:
Collections.sort(dataMap, new Comparator<Map<String, Object>>() { //排序介面實現方法 @Override public int compare(Map<String, Object> lhs, Map<String, Object> rhs) { switch (whichsort) { case System_OpenPosition_Sort_Currency: String d2 = ((String) rhs.get(Instrument)); String d1 = (String) lhs.get(Instrument); if (d2 != null && d1 != null) { int flag = d1.compareTo(d2); if (flag == 0) { Double d3 = ((Double) rhs.get(OpenPrice)); Double d4 = (Double) lhs.get(OpenPrice); if (d3 != null && d4 != null) { int flag2 = d4.compareTo(d3); if (flag2 == 0) { String d5 = ((String) rhs.get(BuySell)); String d6 = (String) lhs.get(BuySell);//文字排序 if (d5 != null && d6 != null) { return d6.compareTo(d5);//返回一個int類型,用來判斷是否大於、小於還是等於 } } return d4.compareTo(d3); } } else { return flag; } // return d1.compareTo(d2); }
㈢ JAVA通過數組按首字母排序怎麼做
自己封裝的一個工具類,可以將漢字按照拼音的首字母排序,支持對Model和字典排序.只能對首字母排序,不支持第二個字母, 實現的原理就是創建一個A-Z的數組,數組中的元素是字典,字典中有兩個元素,一個是title,就是當前的首字母 A-Z中的一個,另一個是保存當前title對應的元素的數組,對傳入的數組進行遍歷獲得數組中的一個元素,如果是Model或者字典通過傳入的key的值獲得要排序的字元串,獲得字磨高符串的拼音的首字母,判斷拼音的首字瞎胡尺母是A-Z中的哪一個,然後放到數組中的對應的字典的數組中.
後來又做了一個對英文的首字母排序的程序,原理和上面的一樣,還省略了將漢字轉化為拼音的步驟。工具類的名稱是:NH_OrderByPinYinFirstLetter。
代碼:使用的時候直接調用下面的方法就行,是一個加號方法,第一個參數是保存要排序的元素的數組,第二個參數:如果數組中是Model或者字典,就寫排序的依據的key值,如做戚果數組中不是Model或字典,就寫nil。
[objc]view plain
//方法
+(NSMutableArray*)baseOrderPinYinOnArr:(NSMutableArray*)arrByKey:(NSString*)key 返回值的類
//返回一個有24個元素的數組,數組里的元素是字典
//字典里有兩對鍵值對
// title :當前的拼音首字母A - Z
// datas :當前的拼音首字母對應的model所組成的數組
㈣ java中對數組中的數據進行隨機排序
對數組進行隨機排序分為兩種形式,一種是完全隨機排序,一種是不完全隨機排序,區別是完全隨機對數組中原先任意的數據不會出現在原來的位置上,那麼,一般來說,完全隨機排序的需求會相對較大,我在此先給出完全隨機方式,如果你需要不完全隨機排序,可以再說:
舉個例子:有一批數據,共n個,依次為a1,a2,a3,…,an-1,an,需要對它們進行完全隨機排序。排序方法類似於直接選擇,從左至右,即從ai+1~an中隨機抽取一個數據與ai交換(1≤i≤n-1)。先排序第一個數據a1:從a2~an中隨機抽出一個數據與a1交換;再排第二個數據a2:從a3~an中隨機抽取一個數據與a2交換;再排第三個數據a3:從a4~an中隨機抽取一個數據與a3交換;…;最後排第n-1個數據an-1:從an~an中隨機抽取一個數據與an-1交換;第n個數據已不需要排序。這樣,總共需要排n-1次。 從以上的演算法分析中可以看出,每個待排序數據都會與其它數據交換位置,所以,每個數據都不會出現在原先的位置上,這是完全隨機排序。
㈤ 在java編程中如何對數組進行排序,並輸出排序後的數組及原數組下標值
java變成對數組進行排序可以使用ArraySort方法,保存源數組下標值可以存入map中,如下代碼:
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.HashMap;
importjava.util.List;
publicclassceshi{
publicstaticvoidmain(String[]args){
intn=5;
int[]a={8,5,4,6,2,1,7,9,3};
HashMapmap=newHashMap();
for(inti=0;i<a.length;i++){
map.put(a[i],i);//將值和下標存入Map
}
//排列
Listlist=newArrayList();
Arrays.sort(a);//升序排列
for(inti=0;i<a.length;i++){
list.add(a[i]);
}
for(Objectobject:list){
System.out.print(object+",");
}
System.out.println();
//查找原始下標
for(inti=0;i<n;i++){
System.out.print(map.get(a[i])+",");
}
}
}
運行結果如下:
㈥ java數組的升序降序排列
先來說你的問題,,你要實現寫入文件是排序的結果,,那麼你就應該先排序再寫到文件,,而不是你現在這樣接受一個寫一個,,再說為什麼文件裡面是亂碼,是因為你每次寫入文件的時候寫了一個字元『0』,這個寫到文件中打開後並不是你想看到的字元串「0」,所以打開是亂碼,
幫你簡單修改了代碼
publicstaticvoidmain(Stringargs[])
{
Scannerscanner=newScanner(System.in);
try
{
intsum=0;//總分
RandomAccessFilef=newRandomAccessFile("data.txt","rw");
System.out.print("請輸入學生的個數:");
intn=scanner.nextInt();
ints[]=newint[n];
for(inti=0;i<n;i++)
{
System.out.println("請輸入第"+(i+1)+"個學生的成績");
s[i]=scanner.nextInt();
sum+=s[i];
}
System.out.println("總分:"+sum);
Arrays.sort(s);
f.writeBytes(Arrays.toString(s));
f.close();
}
catch(IOExceptione)
{
System.err.println(e);
e.printStackTrace();
}
}
隨機文件(RandomAccessFile)讀寫的一些方法,如writeInt writeChar 等,這些方法寫到文件的數據都是二進制的,比如你writeInt(25),寫到文件後打開是不會看到25的,這點一定要注意
㈦ java數組排序
//原理:每次都找到當次最大的數,按大小順序依次放入數組相應位置
//比如:第一次先找到最大的數並記下其位置,如果其不在數組第一位,
//則將其與第一位交換,使最大數置於第一位
//第二次再循環查找第二大的數並記下其位置,如果其不在數組第二位,
//則將其與第二位交換,使最大數置於第二位
//依次類推.........................................
//第i次再循環查找第i大的數並記下其位置,如果其不在數組第 i位,
//則將其與第 i位交換,使最大數置於第 i位
public class SelectSort {
public static void main(String[] args) {
int[] a = {25,15,42,16,12,36};
int max = 0;
int tmp = 0;
for(int i=0;i<a.length;i++){
max = i;//
/**查找第 i大的數,直到記下第 i大數的位置***/
for(int j=i+1;j<a.length;j++){
if(a[max]<a[j])
max = j;//記下較大數位置,再次比較,直到最大
}
/***如果第 i大數的位置不在 i,則交換****/
if(i!=max){
tmp = a[i];
a[i] = a[max];
a[max] = tmp;
}
}
for(int i=0;i<a.length;i++)
System.out.print(a[i]+" ");
}
}