美文网首页
刷题(11)各种排序算法

刷题(11)各种排序算法

作者: MuMuMiu | 来源:发表于2022-01-11 10:18 被阅读0次

把各种排序算法实现一遍

1. quick sort:

public void quick_sort(int[] arr, int low, int high) {

        if(low<high){

            int p = partition(arr, low, high);

            quick_sort(arr, low, p - 1);

            quick_sort(arr, p + 1, high);

        }

    }

    private void swap(int[] arr, int value1, int value2) {

        int temp = arr[value1];

        arr[value1] = arr[value2];

        arr[value2] = arrtemp;

    }

    private int partition(int[] arr, int low, int high) {

        int p = low;

        int j = low+1;

        while(j<=high) {

            if(arr[j]<arr[low]){

                swap(arr, ++p, j);

            }

            j++;

        }

        swap(arr, low, p);

        return p;

    }

2. merge sort

public void merge_sort(int[] arr) {

        int n = arr.length;

        if(n<2) {

            return;

        }

        int mid = n/2;

        int[] leftPart = new int[mid];

        int[] rightPart = new int[n-mid];

        for(int i=0;i<mid;i++) {

            leftPart[i] = arr[i];

        }

        for(int i = mid;i<n;i++) {

            rightPart[i - mid] = arr[i];

        }

        merge_sort(leftPart, mid);

        merge_sort(rightPart, mid);

        merge(arr, leftPart, rightPart);

    }

    private void merge(int[] arr, int[] left, int[] right) {

        int a = arr.length, m = left.length, n = right.length;

        int i = 0, j =  0, k =0;

        while(i<m && j< n) {

            if(left[m] < right[n]) {

                a[k++] = left[i++];

            } else {

                a[k++] = right[j++];

            }

        }

        while(i<m) {

            a[k++] = left[i++];

        }

        while(j<n) {

            a[k++] = right[j++];

        }

    }

---还有几种待续

相关文章

  • 刷题(11)各种排序算法

    把各种排序算法实现一遍 1. quick sort: public void quick_sort(int[] a...

  • 经典排序算法

    序 虽然在各种编程语言中都提供了快速排序的函数或方法,而且刷算法题时很少需要自己手写排序算法。排序算法都不是很难理...

  • leetcode刷题-排序算法

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 冒泡、选择、插入排序

    三个时间复杂度为 O(n^2)的排序算法 排序有很多种,有些算法连名字都没听过,经过这段时间的刷题,我在这里总结一...

  • 5、leetcode 重刷

    leetcode刷题三阶段 1、按tag刷 2、按算法类型刷 3、乱刷 写于20201102晚11点

  • Object-C实现常见十大算法(冒泡、选择、归并、双路、三路.

    我们经常会在时项目使用各种算法,比如排序.排序算法是最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排...

  • 各种排序算法

    1.冒泡排序 1.有多少趟2.每趟向前产生一个最大数 2.插入排序 1.顺序遍历每个数字2.每遍历一个数字,就向前...

  • 各种排序算法

    排序算法包括很多,常见的有快排,堆排序,冒泡排序,归并排序,选择排序,插入排序等, 各种排序算法经常出现在面试题中...

  • 各种排序算法

    1.冒泡排序 通过与相邻元素的比较和交换,把小的数交换到前面。 对数组【12,5,3,2】进行升序排列 第一处理了...

网友评论

      本文标题:刷题(11)各种排序算法

      本文链接:https://www.haomeiwen.com/subject/vjamcrtx.html