code_junkie

Sorting matched arrays in Java

Nov 11th, 2011
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. class Color implements Comparable {
  2. private int number;
  3. private int color;
  4.  
  5. // (snip ctor, setters, etc.)
  6.  
  7. public int getNumber() {
  8. return number;
  9. }
  10. public int getColor() {
  11. return color;
  12. }
  13.  
  14. public int compareTo(Color other) {
  15. if (this.getNumber() == other.getNumber) {
  16. return 0;
  17. } else if (this.getNumber() > other.getNumber) {
  18. return 1;
  19. } else {
  20. return -1;
  21. }
  22. }
  23. }
  24.  
  25. extra = [0,1,...,numbers.length-1]
  26.  
  27. int ptr[] = { 1, 2, 3 };
  28.  
  29. for (int i = 0; i < ptr.length; i++)
  30. {
  31. printf("%d %dn", numbers[ptr[i]], colors[ptr[i]]);
  32. }
  33.  
  34. public class Sort {
  35.  
  36. private static void printTable(String caption, Integer[] numbers,
  37. Integer[] colors, Integer[] sortOrder){
  38.  
  39. System.out.println(caption+
  40. "nNo Num Color"+
  41. "n----------------");
  42.  
  43. for(int i=0;i<sortOrder.length;i++){
  44. System.out.printf("%x %d %dn",
  45. i,numbers[sortOrder[i]],colors[sortOrder[i]]);
  46.  
  47. }
  48. }
  49.  
  50.  
  51. public static void main(String[] args) {
  52.  
  53. final Integer[] numbers = {1,4,3,4,2,6};
  54. final Integer[] colors = {0x50,0x34,0x00,0xfe,0xff,0xff};
  55. Integer[] sortOrder = new Integer[numbers.length];
  56.  
  57. // Create index array.
  58. for(int i=0; i<sortOrder.length; i++){
  59. sortOrder[i] = i;
  60. }
  61. printTable("nNot sorted",numbers, colors, sortOrder);
  62.  
  63. Arrays.sort(sortOrder,new Comparator<Integer>() {
  64. public int compare(Integer a, Integer b){
  65. return numbers[b]-numbers[a];
  66. }});
  67. printTable("nSorted by numbers",numbers, colors, sortOrder);
  68.  
  69. Arrays.sort(sortOrder,new Comparator<Integer>() {
  70. public int compare(Integer a, Integer b){
  71. return colors[b]-colors[a];
  72. }});
  73. printTable("nSorted by colors",numbers, colors, sortOrder);
  74. }
  75. }
  76.  
  77. public class Sort {
  78.  
  79. private static void printTable(String caption, Integer[] numbers,
  80. Integer[] colors, Integer[] sortOrder){
  81.  
  82. System.out.println(caption+
  83. "nNo Num Color"+
  84. "n----------------");
  85.  
  86. for(int i=0;i<sortOrder.length;i++){
  87. System.out.printf("%x %d %dn",
  88. i,numbers[sortOrder[i]],colors[sortOrder[i]]);
  89.  
  90. }
  91. }
  92.  
  93.  
  94. public static void main(String[] args) {
  95.  
  96. final Integer[] numbers = {1,4,3,4,2,6};
  97. final Integer[] colors = {0x50,0x34,0x00,0xfe,0xff,0xff};
  98. Integer[] sortOrder = new Integer[numbers.length];
  99.  
  100. // Create index array.
  101. for(int i=0; i<sortOrder.length; i++){
  102. sortOrder[i] = i;
  103. }
  104. printTable("nNot sorted",numbers, colors, sortOrder);
  105.  
  106. Arrays.sort(sortOrder,new Comparator<Integer>() {
  107. public int compare(Integer a, Integer b){
  108. return numbers[b]-numbers[a];
  109. }});
  110. printTable("nSorted by numbers",numbers, colors, sortOrder);
  111.  
  112. Arrays.sort(sortOrder,new Comparator<Integer>() {
  113. public int compare(Integer a, Integer b){
  114. return colors[b]-colors[a];
  115. }});
  116. printTable("nSorted by colors",numbers, colors, sortOrder);
  117. }
  118. }
Add Comment
Please, Sign In to add comment