排序算法学习笔记

  1. 插入排序
  • 算法稳定、时间复杂度为n^2
    void insertSort (DataType D[], int length) {
        DataType key;
        for(int j=2; j<length; j++) {
            key = D[j];
            int i = j - 1;
            while(i>0 && key < D[i]) {
                D[i+1] = D[i];
                i = i-1;
            }
           D[i+1] = key;
       }
    }
  1. 冒泡排序
  • 算法稳定,时间复杂度为n^2
void bubbleSort(int[] arr){  
        int temp = 0;  
        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-1];  
                    arr[j-1] = arr[j];  
                    arr[j] = temp;  
                }  
            }  
        }  
    }  
  1. 选择排序
  • 算法不稳定,时间复杂度为n^2
void selectSort (T data, int n) {
    int i = 1, j;
    int max;
    while (i < n-1) {
        max = n-i;
        for (j=0; j<n-i+1;j++) {
            if (data[j] > data[max]) {
                max = j;
            }
        }
        if (max!=n-i) {
            swap(data[max], data[n-i]);   
        }
        i++;
    }
}
  1. 快速排序
  • 算法不稳定,通常情况时间复杂度为nlogn
  1. 归并排序

  2. 希尔排序

  • 算法不稳定,一般认为时间复杂度在nlogn与n^2之间,不适用于链表结构
  1. 堆排序
  • 算法不稳定,最坏时间复杂度为nlogn
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,214评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,742评论 0 15
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,292评论 0 35
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,270评论 0 2
  • 命令行修改(重启失效) 设置IP地址 设置网关: 网络配置文件(永久生效) 修改DNS 修改主机名 图形方式
    steven123a阅读 328评论 1 0