美文网首页
排序算法学习笔记

排序算法学习笔记

作者: 情鬼下凡 | 来源:发表于2017-11-13 15:40 被阅读0次
  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

相关文章

网友评论

      本文标题:排序算法学习笔记

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