开发者社区> 问答> 正文

Java性能优化,如何快速排序大量字符串

Java性能优化,如何快速排序大量字符串

展开
收起
道月芬1 2021-11-01 11:52:06 1336 0
2 条回答
写回答
取消 提交回答
  • 可以使用冒泡排序的算法

    2021-11-03 20:21:50
    赞同 展开评论 打赏
  • 找一个基准值base,然后一趟排序后让base左边的数都小于base,base右边的数都大于等于base。再分为两个子数组的排序。如此递归下去。

    public class QuickSort { public static > void sort(T[] arr) { sort(arr, 0, arr.length - 1);

    }

    public static > void sort(T[] arr, int left, int right) { if (left >= right) return;

    int p = partition(arr, left, right);

    sort(arr, left, p - 1);

    sort(arr, p + 1, right);

    }

    private static > int partition(T[] arr, int left, int right) { T base = arr[left];

    int j = left;

    for (int i = left + 1; i <= right; i++) { if (base.compareTo(arr[i]) > 0) { j++;

    swap(arr, j, i);

    }

    }

    swap(arr, left, j);

    return j;//返回一躺排序后基准值的下角标

    }

    public static void swap(Object[] arr, int i, int j) { if (i != j) { Object temp = arr[i];

    arr[i] = arr[j];

    arr[j] = temp;

    }

    }

    private static void printArr(Object[] arr) { for (Object o : arr) { System.out.print(o);

    System.out.print("\t");

    }

    System.out.println();

    }

    public static void main(String args[]) { Integer[] arr = {3, 5, 1, 7, 2, 9, 8, 0, 4, 6};

    printArr(arr);//3 5 1 7 2 9 8 0 4 6

    sort(arr);

    printArr(arr);//0 1 2 3 4 5 6 7 8 9

    }

    }

    2021-11-03 14:17:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载