c语言对一组数据随机排序

2014 神州绿盟暑期实习生笔试题-------程序编程第一题:
  • 第一种方法:

使用自己构造的函数来根据每次的位置信息返回乱序的数字


/*
*
*     程序功能:对指定的数组,进行随机排序,交换数组中的数据位置
*/
#include 
#include 
void swap(int *tempa,int *tempb);

void main()
{
	int a[10]={0,1,2,3,4,5,6,7,8,9};
	int i;
	int j=0;
	for(i=0;i<10;i++)//可修改i<5,对一半乱序交换即可
	{
		j=(int)(pow(i,2)+5*i)%10;//可以自己构造一个其他的函数,保证与10求余后不与原位置相同即可
		swap(&a[i],&a[j]);
	}
	for(i=0;i<10;i++)
	printf("a[%d] is %d\n",i,a[i]);
}

void swap(int *tempa,int *tempb)
{
	int temp;
	temp=*tempa;
	*tempa=*tempb;
	*tempb=temp;
}
排序结果:

a[0] is 5
a[1] is 6
a[2] is 4
a[3] is 2
a[4] is 8
a[5] is 0
a[6] is 9
a[7] is 1
a[8] is 7
a[9] is 3

  • 第二种方法:

使用时间随机函数来返回乱序的数字

/*
*
*     程序功能:对指定的数组,进行随机排序,交换数组中的数据位置
*/
#include 
#include 
void swap(int *tempa,int *tempb);

void main()
{
	int a[10]={0,1,2,3,4,5,6,7,8,9};
	int i;
	int j=0;
	srand((unsigned int)time(NULL));
	for(i=0;i<10;i++)//可修改i<5,对一半乱序交换即可
	{
		j=rand()%10;
		swap(&a[i],&a[j]);
	}
	for(i=0;i<10;i++)
	printf("a[%d] is %d\n",i,a[i]);
}

void swap(int *tempa,int *tempb)
{
	int temp;
	temp=*tempa;
	*tempa=*tempb;
	*tempb=temp;
}

排序结果:

a[0] is 3
a[1] is 2
a[2] is 5
a[3] is 0
a[4] is 1
a[5] is 6
a[6] is 8
a[7] is 7
a[8] is 4
a[9] is 9



你可能感兴趣的:(C程序,c语言,数组随机排序,校园招聘笔试题)