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

来源:互联网 发布:大数据技术具体应用 编辑:程序博客网 时间:2024/04/25 16:03
2014 神州绿盟暑期实习生笔试题-------程序编程第一题:
  • 第一种方法:

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


/***     程序功能:对指定的数组,进行随机排序,交换数组中的数据位置*/#include <stdio.h>#include <math.h>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 5a[1] is 6a[2] is 4a[3] is 2a[4] is 8a[5] is 0a[6] is 9a[7] is 1a[8] is 7a[9] is 3

  • 第二种方法:

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

/***     程序功能:对指定的数组,进行随机排序,交换数组中的数据位置*/#include <stdio.h>#include <time.h>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 3a[1] is 2a[2] is 5a[3] is 0a[4] is 1a[5] is 6a[6] is 8a[7] is 7a[8] is 4a[9] is 9