如下:
#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的整数。
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
}
}
}