本文目錄一覽:
- 1、用C語言如何將一個一維數組中的元素隨機排序
- 2、C語言 隨機數組排序
- 3、C語言數組隨機賦值排序
- 4、c語言如何把一組連續的數隨機排開
- 5、。c語言隨機一個數組,並排序輸出,我是新手,別笑我,大神幫我看看哪裡錯了
用C語言如何將一個一維數組中的元素隨機排序
#include
#include
#include
intmain()
{
inti,j,n,k,t,a[100];
srand((unsigned)time(NULL));
p
利用rand()函數產生隨機數字,rand()%n產生小於n的隨機數,然後交換。
運行的結果:
#include
#include
intmain()
{
intnbs
利用rand()函數產生隨機數字,rand()%n產生小於n的隨機數,然後交換。
擴展資料
C語言排序法
在一層循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位。
這樣只能排好一個元素,於是需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。
C語言 隨機數組排序
#include “stdlib.h”
#include “stdio.h”
main()
{
int i,j,k,a[10000],b[10000],n,t;
printf(“please input the number of integer: “);
scanf(“%d”,n);
for(i = 0; i n; i++)
{
a[i] = random(80) + 20; /*生成數組*/
}
for(i = 0;i n;i++) /*初始化元素數量*/
b[i] = 1;
for(i = 0; i n; i++)
{
for(j = i + 1;j n;j++)
{
if(a[i] == a[j])
{
b[i]++; /*計數*/
n–;
for(k = j;k n;k++) /*去掉數組中重複值*/
a[k] = a[k + 1];
j–;
}
}
}
for(i = 1;i n;i++) /*升序排序*/
for(j = 0;j n – i;j++)
if(a[j] a[j+1])
{
t = a[j];a[j] = a[j + 1];a[j + 1] = t;
t = b[j];b[j] = b[j + 1];b[j + 1] = t;
}
printf(“\n Integer numbers\n”);
for(i = 0;i n;i++) /*輸出*/
{
printf(” %d %d\n”,a[i],b[i]);
}
getch();
}
C語言數組隨機賦值排序
#include stdio.h
#include stdlib.h
int cmp(const void* a, const void* b)
{
return *(int*)a – *(int*)b;
}
int main()
{
int k, i;
int* arr;
printf(“請輸入一個3位數作為一維數組的維數:”);
scanf(“%d”, k);
printf(“生成隨機數組:\n”);
arr = (int*)malloc(k * sizeof(int));
for(i = 0; i k; ++i)
{
arr[i] = rand();
printf(“%d “, arr[i]);
}
printf(“\n”);
printf(“排序後的數組:\n”);
qsort(arr, k, sizeof(int), cmp);
for(i = 0; i k; ++i)
{
printf(“%d “, arr[i]);
}
printf(“\n”);
return 0;
}
c語言如何把一組連續的數隨機排開
1 定義一個輔助數組,和原本數組中總數相同。
2 對輔助數組進行隨機賦值。
3 對輔助數組進行排序,交換數據時,同時交換源數組中的相同位置。
4 當輔助數組有序後,源數組已經完成隨機排序。
代碼如下:
void radom_sort(int *a, int l)
{
int *b;
int i,j,t;
b = (int*)malloc(sizeof(int)*l);
srand(time(NULL));
for(i = 0; i l; i ++)
b[i] = rand();
for(i = 0; i l-1; i ++)
for(j = i + 1; j l; j ++)
{
if(b[i]b[j])
{
t = b[i];
b[i] = b[j];
b[j] = t;
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
。c語言隨機一個數組,並排序輸出,我是新手,別笑我,大神幫我看看哪裡錯了
選擇排序。應該是a[min]與a[i]交換,而不是a[j]與a[i]。代碼:
#includestdio.h
#includestdlib.h
#includetime.h
int main()
{
int a[10],min,i,j;
unsigned int k;
srand((unsigned)time(0));
printf(“原隨機數組位:”);
for(i=0;i10;i++)
printf(“%d “,a[i]=rand());
for(i=0;i9;i++)
{
min=i;
for(j=i+1;j10;j++)
{
if(a[j]a[min]) min=j;
}
k=a[i];
a[i]=a[min]; //!!!! 交換a[i] 與 a[min]
a[min]=k; //!!!!!
}
printf(“\n排序後數組為:”);
for(i=0;i10;i++)
printf(“%d “,a[i]);
putchar(‘\n’); //!!少了一個’
system(“pause”);
return 0;
}
誰都是從新手開始的,請加油~~~
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237414.html