各种排序算法一览

完整代码下载: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);
}

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

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,063评论 1 3
  • 通过前面的知识,我们已经知道,有序的数据在查找时有极大的性能提升。很多查找都基于有序数据,但并不是所有的结构都能像...
    大大纸飞机阅读 1,194评论 0 1
  • 本文对一些排序算法进行了简单分析,并给出了 javascript 的代码实现。因为本文包含了大量的排序算法,所以分...
    前端西瓜哥阅读 333评论 0 0
  • 头一道闪电撕裂天幕,照亮了凌晨两点的夜空,仿佛掘开了天河的大堤,雨水哗啦啦一股脑儿泻下。紧接着,当空一声霹雳撼天动...
    绿萝宝贝阅读 800评论 10 9
  • 昨天熬夜码字,今早一觉睡到六点多,做的梦依旧清晰,赶紧回忆,理清情节,拿出手机给闺蜜L和Z发了微信: 亲刚才做了梦...
    绿筒蒿阅读 345评论 1 0