ITPub博客

首页 > 应用开发 > > 一个简易的数组快速排序算法

一个简易的数组快速排序算法

作者:rainbows 时间:2019-09-06 14:30:14 0 删除 编辑
#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;
}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2442/viewspace-3140681/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-15

  • 博文量
    112
  • 访问量
    1268