刷题(11)各种排序算法

把各种排序算法实现一遍

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++];

        }

    }


---还有几种待续

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,228评论 0 1
  • # 冒泡排序 1.算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,...
    胖子帅阅读 1,553评论 0 0
  • 冒泡排序,选择排序,插入排序(直接插入,二分插入,希尔排序),快速排序,堆排序,归并排序,计数排序,桶排序,基数排...
    亮涛阅读 2,299评论 0 0
  • /* (无序区,有序区)。从无序区通过交换找出最大元素放到有序区前端。 选择排序思路: 1. 比较相邻的元素。如果...
    刘帆_d384阅读 3,352评论 0 0
  • 7种常用的排序算法总结 2016.04.30PoetryAlgorithm 排序算法:一种能将一串数据依照特定的排...
    raining_804f阅读 4,170评论 0 0