算法学习

1.冒泡
如果要让一个数组a[n]按照从小到大的顺序排序,可以让相邻的两个数比较大小,把较大的数排到后面,第一轮比较后,将数组里最大的数放到最后面,一共要比较n-1轮。

void bubble_sort(int a[], int n){//n为数组元素的个数
    for (int i = 0; i < n-1; i++) {
        int sortedComplete = 1;
        for (int j = 0; j < n - 1 - i; j++) {
            if (a[j]>a[j+1]) {
                sortedComplete = 0;
                int tem = 0;
                tem = a[j];
                a[j] = a[j + 1];
                a[j+1] = tem;
            }
        }
        if (sortedComplete) {//如果不是0,说明没有进行交换,也就是说顺序已经是正确的顺序,不需要再进行后面的排序了
            break;
        }
    }
}

int main(int argc, const char * argv[]) {
    bubble_sort(b, 10);
    for (int i = 0; i < 10; i++) {
        printf("%d\n", b[i]);
    }
    return 0;
}

从上面的代码可以看出,不考虑sortedComplete的话,时间复杂度是O(N*N)。
6 2 8 7

快排:

void quick_sort(int arr[], int start, int end){
    if (start >= end) {
        return;
    }
    
    int key = arr[start];
    int i = start;
    int j = end;
    
    while (i != j) {
        while (i<j && arr[j] >= key) {
            j--;
        }
        
        while (i<j && arr[i] <= key) {
            i++;
        }
        
        if (i!=j) {
            int tem = arr[i];
            arr[i] = arr[j];
            arr[j] = tem;
        }
    }
    
    arr[start] = arr[i];
    arr[i] = key;
    
    quick_sort(arr, start, i-1);
    quick_sort(arr, i+1, end);
}

从上面的代码可以看出,快排是先以数组的第一个数位基准数,从右边的下标high开始往前寻找,当找到小于基准数的下标时,在从左边的下标i开始寻找,找到大于基准数的下标,然后交换下标i和j对应的值,然后继续寻找,直到i=j时,此时交换基准数和j对应的数,保证了基准数左边的数都比基准数小,右边的数都比基准数要大。然后对基准数两边的自己递归地使用上面的方法,从而达到排序的效果。

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

推荐阅读更多精彩内容

  • 我们直接对代码进行分析:void MERGE_SORT(int A[], int p, int r){//分离数据...
    LRC_cheng阅读 311评论 0 1
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,220评论 0 52
  • 地下商业街管理公约 前 言 本公约制定的目的,在于界定位于中国濮阳市 地下商业街(以下简称本商街)及其附着设施、 ...
    舍简阅读 775评论 0 0
  • 任何两个人的感情都是一种供需关系 你需要关心,我给你 我需要物质,你给我 你需要性爱,我给你 你需要颜值,我给你 ...
    永恒的teMptation阅读 572评论 0 0
  • 每个人心里都有一个村庄。门前的庄稼,小时候抓过鱼的小河,春天的柳笛,夏天用野花编的花环,院子背后的杏树,邻居家的大...
    有风来袭15311阅读 147评论 0 0