如何用C语言产生1000个随机数,并用冒泡排序法排序并记录处理次数?

Python017

如何用C语言产生1000个随机数,并用冒泡排序法排序并记录处理次数?,第1张

如下:

#include<stdio.h>

#include<stdlib.h>

int main ()

{

int i,j,a[1000],n=0

for(i=0i<1000i++)

a[i] = rand()%3000+1    //产生随机数(3000以内的)

for(i=0i<1000i++)

{

for(j=i+1j<1000j++)

{

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()是产生随机数的函数;需包含头文件#include<stdlib.h>

rand()%3000+1  是产生1~3000的整数。

1 定义一个辅助数组,和原本数组中总数相同。

2 对辅助数组进行随机赋值。

3 对辅助数组进行排序,交换数据时,同时交换源数组中的相同位置。

4 当辅助数组有序后,源数组已经完成随机排序。

代码如下:

void radom_sort(int *a, int l)

{

    int *b

    int i,j,t

    b = (int*)malloc(sizeof(int)*l)

    srand(time(NULL))

    for(i = 0 i < l i ++)

        b[i] = rand()

    for(i = 0 i < l-1 i ++)

        for(j = i + 1 j < l j ++)

        {

            if(b[i]<b[j])

            {

                t = b[i]

                b[i] = b[j]

                b[j] = t

                t = a[i]

                a[i] = a[j]

                a[j] = t

            }

        }

}