#include <stdio.h>
#include<stdlib.h>
#include<time.h>
int split(int *Array,int low,int high);
void QuickSort(int *Array,int low,int high);
int main()
{
int i,m,n,array[100]={0};
srand(time(NULL));
m=0;
//随机生成前十个数,手动输入一个数(int型)
for(i=0;i<10;i++)
{
array[i]=rand()%100;
m++;
}
printf("please enter a number,n=");
scanf("%d",&n);
array[10]=n;
QuickSort(array,0,10);
for(i=0;i<100;i++)
{
printf("%d\t",array[i]);
if(m%6==0) printf("\n");
}
return 0;
}
int split(int *Array,int low,int high)
{
int t = *(Array + low);
while(low!=high)
{
while(low<high && *(Array+high)>=t)
high--;
if(low<high)
{
*(Array + low) = *(Array + high);
low++;
}
while(low<high && *(Array+low)<=t)
low++;
if(low<high)
{
*(Array+high) = *(Array+low);
high--;
}
}
*(Array+low) = t;
return low;
}
void QuickSort(int *Array,int low,int high)
{
int mid;
if(low<high)
{
mid = split(Array,low,high);
QuickSort(Array,low,mid-1);
QuickSort(Array,mid+1,high);
}
}
实验内容:
1、给定一个长度为100的整型数组。其中存储的数据不超过20个,并升序排列,其余的元素均为0。从键盘上输入一个新的整数,插入数组中,使得数组依然升序排列。例如 a[100]=[1,3,4,6,8,0,...,0],现在在数组中插入一个元素b=5,则输出新的数组a[100]=[1,3,4,5,6,8,0,...,0]。(要求用指针访问数组)
参考资料 http://blog.csdn.net/lx18792732127/article/details/72122143