標籤:
以冒泡排序法為例:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 int creatdata(int arr[],int n,int min,int max) 5 { 6 int i,j,flag; 7 srand(time(NULL));//creat data 8 if(max-min+1<n)return 0; 9 for(i=0;i<n;i++)10 {11 do12 {13 arr[i]=(max-min+1)*rand()/(RAND_MAX+1)+min;14 flag=0;15 for(j=0;j<i;j++)16 {17 if(arr[i]==arr[j])18 {19 flag=1;20 }21 }22 }23 while(flag);24 }25 return 1;26 }27 void bubblesort(int a[],int n)28 {29 int i,j,t;30 for(i=0;i<n;i++)31 {32 for(j=n-1;j>i;j--)33 {34 if(a[j-1]>a[j])35 {36 t=a[j-1];37 a[j-1]=a[j];38 a[j]=t;39 }40 }41 /*printf("第%2d遍:",i+1);42 for(j=0;j<n;j++)43 printf("%d",a[j]);44 printf("\n");*/45 }46 }47 int main()48 {49 int i,a[6];50 for(i=0;i<6;i++)51 {52 a[i]=0;53 54 }55 if(!creatdata(a,6,1,100))56 {57 printf("產生隨機數不成功\n");58 return 1;59 }60 printf("原資料:");61 for(i=0;i<6;i++)62 printf("%d ",a[i]);63 printf("\n");64 bubblesort(a,6);65 printf("排序後:");66 for(i=0;i<6;i++)67 printf("%d ",a[i]);68 printf("\n");69 return 0; 70 }
產生不重複隨機數(c/c++)