如何实现数组的随机排序
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();}
#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();}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询