手写---快速排序

浅浅的花香味﹌ 2022-05-10 10:22 236阅读 0赞

快速排序

基本思想:

  • 1.先从数列中取出一个数作为基准数。
  • 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
  • 3.再对左右区间重复第二步,直到各区间只有一个数。
    在这里插入图片描述

    1. public class QuickSort {
    2. int arr[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
    3. public QuickSort(){
    4. quick(arr);
    5. for(int i=0;i<arr.length;i++){
    6. System.out.println(arr[i]);
    7. }
    8. }
    9. public int getMiddle(int[] list, int low, int high) {
    10. int tmp =list[low]; //数组的第一个作为中轴
    11. while (low < high){
    12. while (low < high && list[high] >= tmp) {
    13. high--;
    14. }
    15. list[low] =list[high]; //比中轴小的记录移到低端
    16. while (low < high&& list[low] <= tmp) {
    17. low++;
    18. }
    19. list[high] =list[low]; //比中轴大的记录移到高端
    20. }
    21. list[low] = tmp; //中轴记录到尾
    22. return low; //返回中轴的位置
    23. }
    24. public void _quickSort(int[] list, int low, int high) {
    25. if (low < high){
    26. int middle =getMiddle(list, low, high); //将list数组进行一分为二
    27. _quickSort(list, low, middle - 1); //对低字表进行递归排序
    28. _quickSort(list,middle + 1, high); //对高字表进行递归排序
    29. }
    30. }
    31. public void quick(int[] a2) {
    32. if (a2.length > 0) { //查看数组是否为空
    33. _quickSort(a2,0, a2.length - 1);
    34. }
    35. }
    36. public static void main(String[] args) {
    37. //QuickSort qs = new QuickSort();
    38. }
    39. }

发表评论

表情:
评论列表 (有 0 条评论,236人围观)

还没有评论,来说两句吧...

相关阅读

    相关 快速排序

    定义 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法. 其基本思想为:任取待排序的某个元素作为基准值,按照该排序码将待排序集合分割成两个子序列, 左子

    相关 ---插入排序

    插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应

    相关 ---选择排序

    选择排序 选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未

    相关 ---快速排序

    快速排序 基本思想: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左

    相关 ---冒泡排序

    冒泡排序 基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。 即:每当