随机排列数组
2017-12-04 14:46
183 查看
1.思路:
创建一个结构体{int, int*},前者为随机生成的整数,后者保存对应位数组的地址,再对前者进行插入排序,排序完后者对应的数组值即达到随机打散的目的,代码如下:
2.输出结果:
创建一个结构体{int, int*},前者为随机生成的整数,后者保存对应位数组的地址,再对前者进行插入排序,排序完后者对应的数组值即达到随机打散的目的,代码如下:
#include <iostream> #include <ctime> #include <windows.h> using namespace std; struct Nodes { int nValue; int *pnValue; } pnodeArr; void InitArr(int* nArr, int nLen) { //初始化数组 srand(time(NULL)); for(int i = 0; i < nLen; ++i) { //nArr[i] = rand() % 100; nArr[i] = i; } } void PrintArr(int* pnArr, int nLen) { //打印数组 for(int i = 0; i < nLen; ++i) { cout << pnArr[i] << " "; } cout << endl; } void InsertSort(Nodes* pnodeArr, int nLen) { //对Nodes.nValue进行插入排序 for(int i = 1; i < nLen; ++i) { Nodes tmp = pnodeArr[i]; int j; for(j = i - 1; j >= 0 && tmp.nValue < pnodeArr[j].nValue; --j) { pnodeArr[j + 1] = pnodeArr[j]; } pnodeArr[j + 1] = tmp; } } void RandomArr(int *pnArr, int nLen) { int i; Nodes *pnodeArr = new Nodes[nLen]; int *pnArrTmp = new int[nLen]; srand(time(NULL)); for(i = 0; i < nLen; ++i) { pnArrTmp[i] = pnArr[i]; pnodeArr[i].nValue = rand() % 1000; //Nodes.nValue是随机生成 pnodeArr[i].pnValue = &pnArrTmp[i]; //Nodes.pnValue用来记录原始数据的地址 } InsertSort(pnodeArr, nLen); //插入排序 for(i = 0; i < nLen; ++i) { pnArr[i] = *(pnodeArr[i].pnValue); } delete [] pnArrTmp; delete [] pnodeArr; } int main() { int nLen = 10; int nArr[nLen]; InitArr(nArr, nLen); PrintArr(nArr, nLen); cout << endl; int T = 10; while(T--) { //输出10次随机排序的结果 srand(time(NULL)); RandomArr(nArr, nLen); PrintArr(nArr, nLen); Sleep(2000); //等待2s,更新随机种子 } return 0; }
2.输出结果:
相关文章推荐
- 写一个函数,参数为$n,生成一个数组,其元素为1~$n,各元素位置随机排列,不得重复
- erlang随机排列数组
- Android--获得0-n随机排列的数组
- 基于快速排序思想的随机排列的数组中找第k小的数
- 小白进阶之随机排列数组
- 随机排列数组
- Java获取随机排列数组
- C语随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数放入数组b中,
- 基于快速排序思想的随机排列的数组中找第k小的数
- JavaScript数组随机排列实现随机洗牌功能
- C语言一维数组中的数据随机排列
- 随机排列数组
- 随机排列数组(二)
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 面试题:求数组元素的交集、从数组中随机选取元素、分解质因数、一左一右顺序排列数组
- 生成数组的随机排列
- 一种基于归并排序及随机数生成器对一个给定数组进行随机排列的算法
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- 一次遍历,等概率随机排列数组与带权随机选取问题
- MATLAB产生1到N的有序数组,重新随机排列数组,删除数组中某一个元素