美文网首页
啊哈算法系列第一章 排序

啊哈算法系列第一章 排序

作者: One9398 | 来源:发表于2015-12-02 22:13 被阅读124次

"桶"排序

简单"桶"排序,n个数需要n+1个变量申明,若n的较大造成所占空间过大,变量存储的值是该数所出现过的次数.
时间复杂度为O(M+N)

冒泡排序

n个数进行n-1趟操作,每趟比较直到最后一个未归位的数.
时间复杂度为O(N^2).

void  bubbleSort(int data[], int n) {
    for (int i = 1; i <= n-1; ++i) {
    for(int j = 1; j <= n-i; j++) {
        if (data[j] < data[j+1]) {  
          int temp = data[j];
          data[j] = data[j+1];
          data[j+1] = temp;
        }
    }
   }
}

快速排序

设定基数,进行跳跃式互换位置.两端同时向中间比较,右边找比基数小的,左边找比基数大的,然后进行互换,直至相遇将基数位置放中;然后重复递归原基数的左边和右边.
平均时间复杂度为O(NlogN)

void quickSort(int data[], int left, int right) {

    if (left > right)
    {
        return;
    }

    int i = left;
    int j = right;
    int base = data[left];

    while(i != j) {

        while(a[j] > base && i > j ) {
            j--;
        }

        while(a[i] < base && i > j) {
            i++;
        }

        if (i < j)
        {
            int temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }

    }

      // 将基数归位于中间位置
    a[left] = a[i];
    a[i] = base; 
    
    quickSort(left, i - 1);  // 递归左边
    quickSort(i + 1, right); // 递归右边

}

小结

在"桶"排序, 冒泡排序, 快速排序以上这三种中效率最高的是快速排序.

相关文章

网友评论

      本文标题:啊哈算法系列第一章 排序

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