绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
一个简易的数组快速排序算法
2019-09-06 14:30:14
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void quick_sort(int *array, int len)
{
    int i, j;
    int tmp, ts;

    if (array == NULL || len <= 0) {
        return;
    }

    i = 0;
    j = len - 1;
    ts = array[0];

    while (i < j) {
        while (i < j && array[j] >= ts) {
            j--;
        }

        while (i < j && array[i] <= ts) {
            i++;
        }

        if (i < j) {
            tmp = array[i];
            array[i] = array[j];
            array[j] = tmp;
        }
    }

    array[0] = array[i];
    array[i] = ts;

    quick_sort(array, i);
    quick_sort(array + (i + 1), len - (i + 1));
}

void print_array(int *a, int len)
{
    int i = 0;
    
    printf("before sort:\n");
    while (i < len) {
        printf("%d ", a[i++]);
    }
    printf("\n");
    
    printf("after sort:\n");
    
    quick_sort(a, len);
    i = 0;
    while (i < len) {
        printf("%d ", a[i++]);
    }
    printf("\n\n");
}

void array_gen(int *a, int len)
{
    int i = 0;
    
    if (a == NULL || len <= 0) {
        return; 
    }
    
    while (i < len) {
        a[i++] = rand() % 50;
    }
}

int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int B[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int C[] = {2, 1, 3, 4, 5, 6, 7, 8, 9, 10};
int D[] = {5, 1, 3, 4, 2, 6, 7, 8, 9, 10};

int main(int argc, char *argv)
{
    int q = 0;
    int A[50];

    while (!q) {
        array_gen(A, 50);
        print_array(A, 50);
        scanf("%d", &q);
        if (q == 1) {
            printf("quit!\n");
        }
    }
    
    return 0;
}


分享好友

分享这个小栈给你的朋友们,一起进步吧。

应用开发
创建时间:2020-06-17 15:31:04
应用软件开发是指使用程序语言C#、java、 c++、vb等语言编写,主要是用于商业、生活应用的软件的开发。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~