1. 程式人生 > >c語言對一組資料隨機排序

c語言對一組資料隨機排序

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 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 <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 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語言資料隨機排序

2014 神州綠盟暑期實習生筆試題-------程式程式設計第一題:第一種方法:使用自己構造的函式來根據每次的位置資訊返回亂序的數字 /* * * 程式功能:對指定的陣列,進行隨機排序,交換陣列中的資料位置 */ #include <stdio.h>

蠻力法,資料先進行快排,再找出眾數

 環境 :Windows10, VS2010 #include <iostream> #include <string> using namespace std; int Partition (int r[],int first,int end)

C語言輸入值,最大的元素與第一個交換,最小的與最後一個交換

#include<stdio.h>  //輸入一組值,最大的元素與第一個交換,最小的與最後一個交換void main(){int i,j,k,f[10],max,min,small,big;for(i=0;i<10;i++) scanf("%d",&

C語言分數數列之和

題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個數列的前20項之和。 1.程式分析:請抓住分子與分母的變化規律。 第一個程式碼是受斐波那契數列求兔子的方法

C語言輸入多資料------“~”與 “EOF”的抉擇

while(~scanf("%d",&A)) 通過這樣這樣也可以獲取多組資料 ~ 是按位取反運算子,屬於單目運算子的一種 自己昨天寫的第一篇文章中小小地記錄了一下用EOF如何輸入多組資料 EOF,C語言輸入多組資料 我們也都知道其中whi

C++pair資料進行排序(sort函式的使用)

最近在寫一個演算法的時候,把一些資料存在了pair中,並且需要根據pair中first或者second的值對這些資料進行排序。比如:輸入資料(1,2)、(4,2)、(3,3)、(2,1)根據first的值大小進行升序排序,輸出(1,2)、(2,1)、(3,3)、(4,2)。經過思索之後得到的實現方法如下:首先

C# 隨機資料

protected void Rand(List<int> array) { Random rand=new Random(); int[] result=new int[3]

資料結構學習之路(C語言陣列的簡單實現

以下的程式只是在觀看郝斌老師講解的(C語言資料結構)之後自己做得簡單練習。# include <stdio.h> # include <stdlib.h> typedef struct MyArray{ int * pBase; //存放陣列第一個

C語言 連結串列求資料的交集並集

#include <stdio.h> #include <stdlib.h> typedef struct Node{     int data;     struct Node *next; }List; int isCheck(List *des

c語言種典型的排列合算法

scan .com nbsp 方法 can main else const 組合數 c語言中的全排列算法和組合數算法在實際問題中應用非常之廣,但算法有許許多多,而我個人認為方法不必記太多,最好只記熟一種即可,一招鮮亦可吃遍天 全排列: #include<stdio.h

嵌入式C語言難點:數

數組 位置 scanf 列表 輸出結果 clu sort 難點 can 1.數組的定義   由若幹相同類型並且有順序關系的數組組成,數組中的每個變量就叫做這個數組的元素。   表達式:<儲存類型> <數據類型> <數組名> [<常量

資料中只有一個數字出現次,其他所有數字都是成出現的。請找出這個數。(使用位運算)

連續異或即可得到這個數 #include <windows.h> #include <sdilo.h> int find(int a[],int len) { int ret = 0; int i = 0; for (i = 0; i < len;

c語言個數中的奇數和偶數分開放在一起

       在一個數組中的元素大多奇數和偶數是混在一起的,而將陣列中元素奇數和偶數分開存放則是我們要解決的問題。        將奇數和偶數分開存放然後打印出來的思路是先建立兩個空間,將奇數和偶數分別存放起來,然後

C語言 資料型別、儲存類、分配空間)

C語言是一種移植性強,面向過程的語言,最初由丹尼斯創立,用於編寫UNIX作業系統,移植性強指的是它的程式碼通用性強。 特點:操作簡易,結構化語言,適合處理底層事件。 我的第一個C語言程式 #include <stdio.h> /*前處理器指令,在實際編譯之前執行的*

C 使用拉依達準則(3σ準則)剔除異常資料( Net剔除資料中的奇異值)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c語言某公司幾萬名0-99的員工年齡進行排序

這道題給定的年齡範圍其實在0-99之間,是一個很小的數字範圍,所以我們可以考慮使用輔助空間來對這些年齡進行排序 1.我們可以開闢一個可以存放100個數字的陣列,1就代表一歲 2.進行迴圈統計每個年齡出現了多少次,比如37歲出現10次,那麼輔助陣列中下標為37的位置就為數字10 3.進行倆次迴

3種方法交換兩個整數(不建立臨時變數)+輸出資料最大值+簡單排序+最大公約數

交換兩個整數: 第一種: int a = 6; int b = 8; int t = 0; t = a; a = b; b = t; printf("a = %d b = %d\n", a, b); 後兩種不建立臨時變數 第二種: int a = 6; int

程式設計實現: 資料中只有一個數字出現了次。其他所有數字都是成出現的。 請找出這個數字。(使用位運算)

可以在指定陣列中找出只出現一次的元素 #include<stdio.h> int main() { int arr[] = { 1, 3, 4, 3, 1}; int i = 0; int len = sizeof(arr) / sizeof(ar

C++)用陣列下標形式維陣列進行排序

用另一個數組下標的形式記錄一個一維陣列中下標所對應的元素出現在個數,並對此一維陣列進行排序。 例如:一個一維陣列中的元素為:a[4] = { 2,3,2,5 };此陣列為一個長度為4的陣列,另一個空陣列x[6]={ 0 };x[0] = 0,因為使用下標的形式記錄a陣列中的元素,此時x[]的

程式設計實現: 資料中只有一個數字出現了次。其他所有數字都是成出現的。 請找出這個數字。

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int query(int a[], int size){ for (int i = 1; i < size;++i){ a[