java数组排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数组排序相关的知识,希望对你有一定的参考价值。

有两个数组,int[] a,int[] b,数组a和数组b是有联系的,就是数组a中的第一个元素对应数组b中的第一个元素,数组a中的第二个元素对应数组b中的第二个元素,以此类推,现在我想对数组a进行排序,从小到大排列,数组b也要对应变化,数组b不一定要从小到大,数组a和数组b之间的关系不能破坏,要怎么进行排序。

//原理:每次都找到当次最大的数,按大小顺序依次放入数组相应位置
//比如:第一次先找到最大的数并记下其位置,如果其不在数组第一位,
//则将其与第一位交换,使最大数置于第一位
//第二次再循环查找第二大的数并记下其位置,如果其不在数组第二位,
//则将其与第二位交换,使最大数置于第二位
//依次类推.........................................
//第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]+" ");

参考技术A import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ArrMap
int[] a;
int[] b;
List<Item> items;

public ArrMap(int[] a, int[] b)
this.a = a;
this.b = b;
asList();


private void asList()
items = new ArrayList<Item>();
for (int i = 0; i < a.length; i++)
items.add(new Item(a[i], i));



/*
* 对数组a排序,同时更新数组b的顺序
*/
public void sort()
Collections.sort(items, new Comparator<Item>()
@Override
public int compare(Item o1, Item o2)
return o1.getValue() - o2.getValue();

);
int[] backupB = new int[b.length];
for (int i = 0; i < items.size(); i++)
a[i] = items.get(i).getValue();
backupB[i] = b[items.get(i).getInitIndex()];

b = backupB;


public String toString()
StringBuffer s = new StringBuffer();
for (int i = 0; i < a.length; i++)
s.append(a[i]);
s.append("-");
s.append(b[i]);
s.append("\n");

return s.toString();


public static void main(String[] args)
int[] a = 12, 32, 42, 0, 32, 68, 4;
int[] b = 6, 16, 21, 0, 16, 34, 2;//元素是数组a元素的1/2

ArrMap am = new ArrMap(a, b);

System.out.println("before:\n" + am.toString());

am.sort();

System.out.print("after:\n" + am.toString());

/*
* 内部类,用来记录元素和它排序之前的索引
*/
private class Item
private int value;
private int initIndex;

public Item(int value, int initIndex)
this.value = value;
this.initIndex = initIndex;


public int getValue()
return value;


public int getInitIndex()
return initIndex;


本回答被提问者和网友采纳
参考技术B 冒泡排序、堆排、快排、插入排序。。。 参考技术C Array.Sort(int[] score);
排序
参考技术D
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

public class ArrayTest 

/**
 * @param args
 */
public static void main(String[] args) 
int[] a =  45, 23, 11, 55 ;
int[] b =  45, 23, 11, 55 ;
Map<Integer, Integer> m = new TreeMap<Integer, Integer>(
new Comparator<Integer>() 

@Override
public int compare(Integer o1, Integer o2) 
return o1.compareTo(o2);


);
for (int i = 0; i < a.length; i++) 
m.put(a[i], b[i]);

int i = 0;
for (int c : m.keySet()) 
a[i] = c;
b[i] = m.get(c);
i++;

for (int temp : a) 
System.out.println(temp);

for (int temp : b) 
System.out.println(temp);


以上是关于java数组排序的主要内容,如果未能解决你的问题,请参考以下文章

java数组排序

java String数组按照某个中文数组排序

JAVA通过数组按首字母排序怎么做?

java 数组排序的方法

java二维数组 按某列排序

JAVA通过数组按首字母排序