Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. import java.util.Date;
  2.  
  3. public class Shell {
  4. public static void sort(Comparable[] a) {
  5. // 希尔排序:
  6. // 是基于插入排序的,
  7. // 使数组中, *任意* 每隔 h 是有序的,
  8. // 当 h=1 时, 整个数组都是有序的
  9. int n = a.length;
  10. int h = 1;
  11. while (h < n/3) {
  12. h = 3 * h + 1;
  13. }
  14. while (h >= 1) {
  15.  
  16. for (int i = h; i < n; i++) {
  17. for (int j = i; j >= h && less(a[j], a[j - h]); j -= h) {
  18. exch(a, j, j - h);
  19. }
  20. }
  21.  
  22. h = h / 3;
  23. }
  24. }
  25.  
  26. // v 是否比 w 小 ? 如果返回 true: v < w
  27. private static boolean less(Comparable v, Comparable w) {
  28. return v.compareTo(w) < 0;
  29. }
  30.  
  31. private static void exch(Comparable[] a, int i, int j) {
  32. Comparable t = a[i];
  33. a[i] = a[j];
  34. a[j] = t;
  35. }
  36.  
  37. private static void show(Comparable[] a) {
  38. for (int i = 0; i < a.length; i++) {
  39. System.out.print(a[i] + " ");
  40. }
  41. System.out.println();
  42. }
  43.  
  44. public static boolean isSorted(Comparable[] a) {
  45. for (int i = 1; i < a.length; i++) {
  46. if (less(a[i], a[i - 1])) {
  47. return false;
  48. }
  49. }
  50. return true;
  51. }
  52.  
  53. public static long timeRandomInput(int len, int count) {
  54. long total = 0;
  55. Comparable[] a;
  56. for (int i = 0; i < count; i++) {
  57. a = Utils.generateRandomIntArray(len, 0, len - 1);
  58. long start = (new Date()).getTime();
  59. sort(a);
  60. total += ((new Date()).getTime()) - start;
  61. }
  62. return total;
  63. }
  64.  
  65. public static void main(String[] args) {
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement