三种排序C语言(冒泡选择快排)

Posted 长路漫漫 且行且停

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三种排序C语言(冒泡选择快排)相关的知识,希望对你有一定的参考价值。

冒泡排序

for (int i = 1; i < n; i++)

    for (int j = 0; j < n - i; j++)
    
        if (a[j] > a[j - 1])
        
            int temp = a[j];
            a[j] = a[j + 1];
            a[j + 1] = t;
        
    

选择排序

for (int i = 0; i < n - 1; i++)

    int t = i;
    for (int j = i + 1; j < n; j++)
    
        if (a[t] > a[j])
        
            t = j;
        
    
    if (t != i)
    
        int temp = a[i];
        a[i] = a[t];
        a[t] = temp;
    

qsort(a, k, sizeof(a[0]), cmp);

快排

整形数组排序

static int cmp(const void *a, const void *b)

    return *(int *)a - *(int *)b;

qsort(a, k, sizeof(a[0]),cmp); // a为数组,k为数组长度

字符数组排序

static int cmp(const void *a, const void *b)

    return *(char *)a - *(char *)b;

qsort(a, len, sizeof(a[0]), cmp);

字符串排序

char a[][10] = "asasd","asdsfd","sd";
static int cmp(const void *a,const void *b)

    return strcmp((char *)a, (char *)b);

qsort(a, k, sizeof(a[0]),cmp); // k = 3;

二维数组排序

char a[][2]=1,2,3,4,2,3,4,5;
static int cmp(const void *a, const void *b)

    int *x = *(int **)a;
    int *y = *(int **)b;
    if (x[0] == y[0])
    
        return x[1] - y[1];
    
    return x[0] - y[0];

qsort(a, k, sizeof(a[0]), cmp); // k = 4
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于三种排序C语言(冒泡选择快排)的主要内容,如果未能解决你的问题,请参考以下文章

三种排序C语言(冒泡选择快排)

8种面试经典!排序详解--选择,插入,希尔,冒泡,堆排,3种快排,快排非递归,归并,归并非递归,计数(图+C语言代码+时间复杂度)

八大排序算法C语言过程图解+代码实现(插入,希尔,选择,堆排,冒泡,快排,归并,计数)

8种面试经典排序详解--选择,插入,希尔,冒泡,堆排,3种快排及非递归,归并及非递归,计数(图+C语言代码+时间复杂度)

8种面试经典排序详解--选择,插入,希尔,冒泡,堆排,3种快排及非递归,归并及非递归,计数(图+C语言代码+时间复杂度)

排序算法合集(冒泡,选择,插入,堆排,快排)