利用随机整数产生N个快速排序

利用随机函数产生N个随机整数(200以上),对这些数进行由小到大的排序。(采用快速排序)

N的值根据需要输入:

img

如下


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//快速排序
void QuickSort(int  nums[], int L, int R) {
    int i, j = L, temp, k = nums[R];
    if (L < R) {
        for (i = L; i < R; i++) {
            if (nums[i] < k) {
                temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
                j++;
            }
        }
        temp = nums[R];
        nums[R] = nums[j];
        nums[j] = temp;
        QuickSort(nums, L, j - 1);
        QuickSort(nums, j + 1, R);
    }
    return;
}

int main()
{
    int i, n;
    int* p = 0;
    srand((unsigned int)time(0));
    printf("请输入N的值:");
    scanf("%d", &n);
    p = (int*)malloc(sizeof(int) * n);
    printf("随机生成的数据:\n");
    for (i = 0; i < n; i++)
    {
        p[i] = rand()%10000;
        printf("%d ", p[i]);
    }
    printf("\n排序后:\n");
    //调用函数
    QuickSort(p, 0, n - 1);
    //输出
    for (i = 0; i < n; i++)
    {
        if (i < n - 1)
            printf("%d ", p[i]);
        else
            printf("%d", p[i]);
    }
    return 0;

}

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[201];
int i;
int compare( const void *arg1, const void *arg2 ) {
    return *(int *)arg1-*(int *)arg2;
}
int main() {
    srand((unsigned int)time(NULL));
    for (i=0;i<201;i++) d[i]=rand();
    qsort((void *)d, 201, sizeof(int), compare);
    for (i=0;i<201;i++) {
        printf(" %d",d[i]);
        if (i%10==9) printf("\n");
    }
    printf("\n");
    return 0;
}
// 58 84 165 337 558 1144 1267 1325 1443 2007
// 2045 2355 2371 2379 2520 2534 2709 2726 2948 2961
// 3174 3277 3585 4052 4090 4091 4440 4477 4641 4687
// 5090 5476 5627 5654 5678 5709 5769 5770 5816 5841
// 5948 6328 6389 6475 6479 6481 6727 6952 7015 7029
// 7060 7329 7721 7950 7988 8141 8270 8537 9024 9143
// 9188 9247 9349 9588 9839 10004 10081 10085 10697 10919
// 11432 11484 11554 11565 11645 11676 11890 11901 12594 12626
// 12810 12910 13053 13069 13876 14091 14164 14178 14200 14289
// 14361 14408 14456 14474 15123 15126 15289 15538 15652 15660
// 15865 15876 15978 16108 16915 16973 17019 17229 17400 17406
// 17625 17687 17732 17870 18226 18250 18275 18310 19032 19038
// 19307 19404 19503 19545 19607 19738 19766 19800 19881 20287
// 20584 20686 20694 20714 20800 21041 21724 21766 21777 22056
// 22080 22314 22418 22434 22661 22883 23161 23412 23604 23741
// 24560 24581 24699 24779 24807 25288 25450 25635 25645 25713
// 25928 25960 26036 26036 26236 26303 26368 26565 26684 26780
// 26904 26924 27088 27107 27399 27456 27459 27573 27618 27996
// 28087 28151 28503 28661 28866 28960 29124 29200 29298 29301
// 29329 29725 30127 30635 30698 30868 31092 31546 31833 32507
// 32629
//


 
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
//快速排序
void QuickSort(int  nums[], int L, int R) {
    int i, j = L, temp, k = nums[R];
    if (L < R) {
        for (i = L; i < R; i++) {
            if (nums[i] < k) {
                temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
                j++;
            }
        }
        temp = nums[R];
        nums[R] = nums[j];
        nums[j] = temp;
        QuickSort(nums, L, j - 1);
        QuickSort(nums, j + 1, R);
    }
    return;
}
 
int main()
{
    int i, n;
    int* p = 0;
    srand((unsigned int)time(0));
    printf("请输入N的值:");
    scanf("%d", &n);
    p = (int*)malloc(sizeof(int) * n);
    printf("随机生成的数据:\n");
    for (i = 0; i < n; i++)
    {
        p[i] = rand()%10000;
        printf("%d ", p[i]);
    }
    printf("\n排序后:\n");
    //调用函数
    QuickSort(p, 0, n - 1);
    //输出
    for (i = 0; i < n; i++)
    {
        if (i < n - 1)
            printf("%d ", p[i]);
        else
            printf("%d", p[i]);
    }
    return 0;
 
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void kuaipai(int a[],int start,int end)    //start和end都是指下标
{
    int i,j,temp,x;
    i=start;
    j=end;
    x=a[start];    //选取基准值
    while(i<j)
    {
        while(i<j && x<a[j])    //从右向左搜索小于基准值的数,让j等于它的下标
            j--;
        while(i<j && x>a[i])    //从左向右搜索大于基准值的数,让i等于它的下标
            i++;
        if(i<j)    //在满足i<j的条件下,交换a[i]和a[j]的值 
        {
            temp=a[j];
            a[j]=a[i];
            a[i]=temp;
        }
    }
    temp=x;   //跳出循环之后,把基准值和a[i]调换 
    x=a[i];
    a[i]=temp;
    if(start<j)    //递归 
        kuaipai(a,start,j-1);
    if(i<end)
        kuaipai(a,j+1,end);
}
void print(int s[],int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%d ",s[i]);
    printf("\n");
}

int main()
{
    int n;
    srand((unsigned)time(NULL));
    printf("输入随机数个数N:");
    scanf("%d",&n);
    int a[n];
    for(int i=0;i<n;i++)
    {
        a[i]=rand()%100;
    }
    printf("排序前:");
    print(a,n);
    printf("排序后:");
    kuaipai(a,0,n-1);
    print(a,n);
    return 0;

}