美文网首页
排序算法总结

排序算法总结

作者: Raindropgen | 来源:发表于2017-11-03 10:57 被阅读0次

1. 插入排序

直接插入排序

在要排序的一组数中,假设前n-1个数已经拍好顺序,现将第n个数插到有序数列中,使这n个数也是排序好的,如此循环,直到全部排好顺序。O(n^2)
代码实现:

void InsertSort(int array[],int length){
    int temp;
    for(int i = 0;i < length - 1;i++){
        for(int j = i+1;j > 0;j++){
            if(array[j] < array[j-1]){
                temp = array[j-1];
                array[j-1] = array[j];
                array[j] = temp;
            }else{
                `break;
            }
        }
    }
}

希尔排序

2. 选择排序

简单排序

堆排序

3. 交换排序

冒泡

两个数比较大小,较大的书下沉,较小的数冒出。
过程:比较相邻数据,若第二个数小,就交换位置:从后向前两两比较,一直到比较最前两个数据最终最小数据被交换到起始位置,则第一个最小数位置排好:重复上述过程,将剩余数排好。
代码实现:

void BubbleSort(int arr[]){
    int temp;
    for(int i = 0;i < arr.length-1;i++){
        for(int j=arr.length-1;j>i;j--){
            if(arr[j]<arr[j-1]){
                temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
            }
        }
    }
}

优化:多数时候,数据排好顺序后,算法仍会进行下一轮比较,知道arr.length-1次,后面的比较无意义。此时可设置标志位flag,用于标志某一趟排序过程是否有数据交换,若未发生交换,则可立即结束排序。

void BubbleSort(int arr[]){
    int temp;
    for(int i = 0;i < arr.length-1;i++){
        bool flag = false;
        for(int j=arr.length-1;j>i;j--){
            if(arr[j]<arr[j-1]){
                temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
                flag = true;
            }
        }
        if(!flag)
            break;
    }
}

快速

4. 归并排序

5. 基数排序

相关文章

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 面试常问的排序算法

    排序算法总结 排序是算法问题中的经典问题。为什么要总结排序算法呢?你懂的 : (假设所有的排序都是要求最终结果为:...

  • 浅谈排序算法

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

  • 排序算法

    一、排序算法总结 排序算法题目 排序算法快速排序堆排序归并排序 应用最小K个数(TopK问题)215.数组中的第K...

  • 一文搞定十大经典排序算法(Java实现)

    本文总结十大经典排序算法及变形,并提供Java实现。参考文章:十大经典排序算法总结(Java语言实现)快速排序算法...

  • Swift的十大经典排序算法总结

    Swift的十大经典排序算法总结 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

网友评论

      本文标题:排序算法总结

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