美文网首页
各种排序算法一览

各种排序算法一览

作者: 大齿一鲸 | 来源:发表于2019-06-26 17:52 被阅读0次

完整代码下载:https://github.com/weida-studio/Sort

1、冒泡排序

void BubbleSort::sort(){
    for (int i = count-1; i>0; i--) {
        for (int j=0; j<i; j++) {
            if (array[j] > array[j+1]) {
                swap(array[j], array[j+1]);
            }
        }
    }
}

2、选择排序

void SelectionSort::sort(){
    for (int i=count-2; i>=0; i--) {
        int maxIndex = i+1;
        for (int j=0; j<=i; j++) {
            if (array[j] > array[maxIndex]) {
                maxIndex = j;
            }
        }
        swap(array[i+1], array[maxIndex]);
    }
}

3、插入排序

void InsertSort::sort(){
    for (int i = 1; i<count; i++) {
        for (int j=i-1; j>=0; j--) {
            if (array[j] > array[j+1] ) {
                swap(array[j], array[j+1]);
            }else{
                break;
            }
        }
    }
}

4、快速排序

int QuickSort::seperator(int start, int end){
    int base = array[start];
    int left = start +1;
    int right = end;
    
    while (1) {
        while (left <= end && array[left] <= base) left++;
        while (right >= left && array[right] >= base) right--;
        
        if (right > left) {
            swap(array[left], array[right]);
        }else{
            swap(array[start], array[right]);
            break;
        }
    }
    return right;
}

void QuickSort::sort(int start, int end){
    int position = seperator(start, end);
    
    if (position > start) {
        sort(start, position-1);
    }
    
    if (position < end) {
        sort(position+1, end);
    }
}

void QuickSort::sort(){
    sort(0, count-1);
}

相关文章

  • 各种排序算法一览

    完整代码下载:https://github.com/weida-studio/Sort 1、冒泡排序 2、选择排序...

  • 排序优化

    一、如何选择合适的排序算法? 1.排序算法一览表时间复杂度 是稳定排序? 是原地排序?冒泡排序 O(n^2) 是 ...

  • 浅谈排序算法

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

  • 12 | 排序优化:如何实现一个通用的、高性能的排序函数?

    一、如何选择合适的排序算法? 1.排序算法一览表 2.为什选择快速排序? 1)线性排序时间复杂度很低但使用场景特殊...

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

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

  • 各种排序算法

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

  • 各种排序算法

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

  • 各种排序算法

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

  • 各种排序算法

    冒泡排序 从第一个数开始,相邻两个数比较,前一个大于后一个,则调换,重复这个过程。代码实现:python: 嵌套循...

  • 各种排序算法

    https://zhuanlan.zhihu.com/p/27005757

网友评论

      本文标题:各种排序算法一览

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