程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言之random_n

C語言之random_n

編輯:關於C語言

 

之前寫算法排序時有些數據總是手工輸入,多少有些不方便,而且在小數據量輸入時還可以接受,但是當數據量上升到K級後就顯得龐雜。而且要保證之前輸入的數據沒有太多重復或者不重復這就更是考驗我們的記憶力拉。所有我寫拉一個產生N個無序整數的程序,此程序可以產生N個數,且在0-N 之間,並且各不相同。

 

具體代碼如下:

 

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

 

#define MAX_NUM 10   //所要產生的數據量

 

void  random_n(int a[],int n); 聲明random_n函數

 

int main()

{

    int a[MAX_NUM],i=0,j=0;

    while(j<MAX_NUM)

    {

        a[j]=-1;          //初始化,很重要,之前在初始化上栽了大跟頭

        j++;

    }

    random_n(a,MAX_NUM);

    while(i<MAX_NUM)

    {

        printf("%d\t",a[i]);

        i++;

    }

    printf("\n");

    return 0;

}

void  random_n(int a[],int n)

{

    int temp=0,j=0,count=0,i=0;

    srand(time(0));

    while(count < n)

    {

        printf("\nStart!\n");

        temp=rand()%n;

        printf("\ncount = %d ,temp =%d",count,temp);

        for(j=0;j<count;j++)

        {

            if(a[j]==temp)

            {

              printf(" Find!\n"); 

              i=1;

              break;

            }

            else

            {

              i=0;   //做標記

            }

        }

        if(j==count && i==0) //比較完畢並且沒有找到相同的

        {

              printf("\nNOT  Find !\n");

              a[count]=temp;

              count++;

        }

    }

 

}

運行結果:

 

\添加這個小函數後,我們在之後的算法數據輸入時可以直接調用這個函數,事先聲明一個含有MAX_NUM 個元素的數組,然後傳參給random_n函數即可。算法的最壞運行情況為O (N^2),最好運行情況為O (N)。

 

 

這個算法效率不算高,之後我會給大家介紹一個效率更高的生成無序數的方法

摘自 明月天涯

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved