您的位置:

c语言随机数组并排序,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;

}

谁都是从新手开始的,请加油~~~