c语言生成50个随机数,对随机数进行冒泡和双向冒泡排序
冒泡法进行升序排序,双向冒泡法进行降序排序。
#include stdio.h
#include stdlib.h
void rndData(int data[], int length){
int i;
for(i=0;ilength;i++){
data[i] = rand()% 100 + 1;//[1, 100]
}
}
void printData(int data[], int length){
int i;
for(i=0;ilength;i++){
printf(“%4d”, data[i]);
if((i+1)%10 == 0){
printf(“\n”);
}
}
printf(“\n”);
}
void swap(int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(int data[], int length){
int i,j=length;
while(j0){
for(i=0;ij-1;i++){
if(data[i] data[i+1]){
swap(data[i], data[i+1]);
}
}
j–;
}
}
void shakerBubbleSort(int data[], int length){
int left = 0, right = length – 1;
int i,j;
while(right left){
for(i=left;iright;i++){
if(data[i] data[i+1]){
swap(data[i], data[i+1]);
j = i;
}
}
right = j;
for(i=right-1;i=left;i–){
if(data[i] data[i+1]){
swap(data[i], data[i+1]);
j = i + 1;
}
}
left = j;
}
}
void main(){
int data[50];
srand(time(0));
//rand data and sort asc
rndData(data, 50);
printData(data, 50);
bubbleSort(data, 50);
printData(data, 50);
//sort des
//rndData(data, 50);
//printData(data, 50);
shakerBubbleSort(data, 50);
printData(data, 50);
}
如何用C语言产生1000个随机数,并用冒泡排序法排序并记录处理次数?
如下:
#includestdio.h
#includestdlib.h
int main ()
{
int i,j,a[1000],n=0;
for(i=0;i1000;i++)
a[i] = rand()%3000+1; //产生随机数(3000以内的)
for(i=0;i1000;i++)
{
for(j=i+1;j1000;j++)
{
if(a[i]a[j]) //交换
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
n++;
}
}
if(i%15==0)
printf(“\n”);
printf(“%d “,a[i]);
}
printf(“\n次数:%d\n”,n);
return 0;
}
rand()是产生随机数的函数;需包含头文件#includestdlib.h
rand()%3000+1 是产生1~3000的整数。
c语言随机生成10个数,采用冒泡排序法将偶数位排序成降序
#includestdio.h
#includestdlib.h
#includetime.h
#define N 10
void main() { int a[N],i,j,k;
srand((unsigned int)time(NULL));
for ( i=0;iN;i++ ) a[i]=rand()%100;
for ( i=0;iN;i++ ) printf(“%d “,a[i]); printf(“\n”);
for ( i=0;iN/2-1;i++ )
for ( j=N/2-1;ji;j– )
if ( a[j*2]a[(j-1)*2] ) { k=a[j*2];a[j*2]=a[(j-1)*2]; a[(j-1)*2]=k; }
for ( i=0;iN;i++ ) printf(“%d “,a[i]); printf(“\n”);
for ( i=0;iN/2;i++ ) printf(“%d “,a[i*2]); printf(“\n”);
}
c语言随机产生20个整数然后排序 顺序 越简单越好(新新手)
#includestdio.h
#includestdlib.h
int main(void){
int i,j,n,a[20];
//限定整数范围为0~k。如果不需要范围,可以去掉%k
int k=100;
for(i=0;i20;i++)
a[i]=rand()%k;
//排序a[20],从小到大
for(i=0;i19;i++){
for(j=i+1;j20;j++){
if(a[i]a[j]){
n=a[i];
a[i]=a[j];
a[j]=n;
}
}
}
//输出a[20]
for(i=0;i20;i++)
printf(“%d “,a[i]);
return 0;
}