利用随机函数产生N个随机整数(200以上),对这些数进行由小到大的排序。(采用快速排序)
N的值根据需要输入:
如下
#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;
}