Javaの配列ソートで悩んでいます…。
Posted: 2012年12月15日(土) 02:09
import java.util.*;
class Sort2 {
public static void main(String[] args) {
int a[][] = {
{ 30, 10, 20, 40, 50 },
{ 0, 1, 2, 3, 4 },
};
Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
for (int i = 0; i < 5; i++)
map.put(a[0][i], a[1][i]);
int k = 0;
for (int key : map.keySet()) {
a[0][k] = key;
a[1][k++] = map.get(key);
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++)
System.out.printf("%3d", a[i][j]);
System.out.println();
}
}
}
import java.util.*;
class Sort3 {
public static void main(String[] args) {
int a[][] = {
{ 30, 10, 20, 40, 50 },
{ 0, 1, 2, 3, 4 },
};
class Pair {
int key, value;
Pair(int k, int v) { key = k; value = v; };
};
Pair[] pairs = new Pair[5];
for (int i = 0; i < 5; i++)
pairs[i] = new Pair(a[0][i], a[1][i]);
Arrays.sort(pairs, new Comparator<Pair>() {
public int compare(Pair a, Pair b) { return a.key - b.key; }
});
for (int i = 0; i < 5; i++)
System.out.printf("%3d", pairs[i].key);
System.out.println();
for (int i = 0; i < 5; i++)
System.out.printf("%3d", pairs[i].value);
System.out.println();
}
}
import java.util.*;
import java.lang.*;
class Main
{
private static void sortIt(int[][] target) {
for(int i=target[0].length-1;i>0;i--) {
for(int j=0;j<i;j++) {
if(target[0][j]>target[0][j+1]) {
for(int k=0;k<target.length;k++) {
int temp;
temp=target[k][j];
target[k][j]=target[k][j+1];
target[k][j+1]=temp;
}
}
}
}
}
public static void main (String[] args) throws java.lang.Exception
{
int[][] a={
{20,10,30,40,50},
{ 0, 1, 2, 3, 4},
{ 5, 6, 7, 8, 9}
};
sortIt(a);
for(int i=0;i<a[0].length;i++) {
for(int j=0;j<a.length;j++) {
System.out.print(String.valueOf(a[j][i])+" ");
}
System.out.println("");
}
}
}import java.util.*;
import java.lang.*;
class Main
{
private static void sortIt(int[][] target,int start,int end) {
int left,right;
if(start+1>=end)return;
if(start+2==end) {
if(target[0][start]>target[0][start+1]) {
for(int i=0;i<target.length;i++) {
int temp;
temp=target[i][start];
target[i][start]=target[i][start+1];
target[i][start+1]=temp;
}
}
return;
}
int pipot=target[0][start+(end-start)/2];
left=start;right=end-1;
while(left<right) {
while(left<end && target[0][left]<pipot)left++;
while(right>=start && target[0][right]>pipot)right--;
if(left>=right)break;
for(int i=0;i<target.length;i++) {
int temp;
temp=target[i][left];
target[i][left]=target[i][right];
target[i][right]=temp;
}
left++;
}
if(left<=start)left=start+1;
if(left>=end)left=end-1;
if(left-start>end-left) {
sortIt(target,left,end);
sortIt(target,start,left);
} else {
sortIt(target,start,left);
sortIt(target,left,end);
}
}
private static void sortIt(int[][] target) {
sortIt(target,0,target[0].length);
}
public static void main (String[] args) throws java.lang.Exception
{
int[][] a={
{20,10,30,40,50},
{ 0, 1, 2, 3, 4},
{ 5, 6, 7, 8, 9}
};
sortIt(a);
for(int i=0;i<a[0].length;i++) {
for(int j=0;j<a.length;j++) {
System.out.print(String.valueOf(a[j][i])+" ");
}
System.out.println("");
}
}
}import java.util.*;
class Sort4 {
public static void main(String[] args) {
int a[][] = {
{ 30, 10, 20, 40, 50 },
{ 0, 1, 2, 3, 4 },
{ 5, 6, 7, 8, 9 },
};
Integer[] index = new Integer[5];
for (int i = 0; i < 5; i++) index[i] = i;
class Comp implements Comparator<Integer> {
int[][] m;
Comp(int[][] a) { m = a; }
public int compare(Integer x, Integer y) {
return m[0][x] - m[0][y];
}
}
Arrays.sort(index, new Comp(a));
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++)
System.out.printf("%3d", a[i][index[j]]);
System.out.println();
}
}
}