关闭

快速排序

219人阅读 评论(0) 收藏 举报
分类:

快速排序C语言实现

这里我实现了一个quick函数,它的类型为空,第一个参数为要排序的数组的首地址,第二个参数为该数组的长度。
#include <stdio.h>
#define N 10

int* p;

void quick(int* arr, int length)
{
    int i,j,a,temp;
    i = 0;
    j = length - 1;
    a = arr[0];

    while(i != j)
    {
        //j move
        while(i != j && arr[j] >= a)
        {
            j--;
        }
        if(i == j)
        {
            break;
        }

        //i move
        do{
            i++;
        }while(i != j && arr[i] < a);
        if(i == j)
        {
            break;
        }
        
        temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    temp = arr[0];
    arr[0] = arr[i];
    arr[i] = temp;
    
    printf("==>");
    for (int i = 0; i < N; i++)
    {
        printf("%d ", p[i]);
    }
    printf("\n");

    if(i > 1)
    {
        quick(&arr[0], i);
    }
    if((length - 1 - i) > 1)
    {
        quick(&arr[i+1], length - 1 - i);
    }
}

int main()
{
    int array[N] = {5,4,6,2,7,8,1,10,9,3};
    p = array;
    for (int i = 0; i < N; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
    
    quick(array, N);

    for (int i = 0; i < N; i++)
    {
        printf("%d ", array[i]);
    }
    printf("\n");
    
    return 0;
}
输出结果:

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2330次
    • 积分:104
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档