//原理:每次都找到当次最大的数,按大小顺序依次放入数组相应位置
//比如:第一次先找到最大的数并记下其位置,如果其不在数组第一位,
//则将其与第一位交换,使最大数置于第一位
//第二次再循环查找第二大的数并记下其位置,如果其不在数组第二位,
//则将其与第二位交换,使最大数置于第二位
//依次类推.........................................
//第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
/**查找第 i大的数,直到记下第 i大数的位置***/
for(int j=i+1;j
}
/***如果第 i大数的位置不在 i,则交换****/
if(i!=max){
tmp = a[i];
a[i] = a[max];
a[max] = tmp;
}
}
for(int i=0;i
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ArrMap {
int[] a;
int[] b;
List
public ArrMap(int[] a, int[] b) {
this.a = a;
this.b = b;
asList();
}
private void asList() {
items = new ArrayList
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
@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;
}
}
}
冒泡排序、堆排、快排、插入排序。。。
Array.Sort(int[] score);
排序
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 };
Mapm = new TreeMap (
new Comparator() {
@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);
}
}
}