参考:

https://blog.csdn.net/cordova/article/details/52884399

https://zhidao.baidu.com/question/1604258083773493627.html

自己的测试代码

    int array1[] = {,,,,,,,,};

    int array2[] = {  };

    for (int i=;i>;i--)
{
int pos = rand() % i;
printf("%d ", pos); array2[i] = array1[pos]; for (int j = pos;j<;j++)
{
array1[j] = array1[j+];
}
} array2[] = array1[]; printf("\n");
for (int i = ; i< ; i++)
{
printf("%d ", array2[i]);
}

打乱之后,恢复:

#include<iostream>
using namespace std;
int main()
{
char str[]="abcdefg123456789";
char key[]="";
char temp;
/*利用秘钥乱序*/
for(int j = ; j < ; j++) //对于key的前两位
for(int i = ;(i+(key[j]-''))<=; i++)
{
if(i%!=)//奇数位与其后面第key[j]位交换
{
temp = str[i+(key[j]-'')];
str[i+(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
cout<<endl;
for(int j = ; j < ; j++) //对于key的后两位
for(int i = ;(i+(key[j]-''))<=; i++)
{
if(i%==)//偶数位与其后面第key[j]位交换
{
temp = str[i+(key[j]-'')];
str[i+(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
cout<<endl; /*利用秘钥复原*/
for(int j = ; j >= ; j--) //对于key的后两位
for(int i = ;(i-(key[j]-''))>=; i--)
{
if(i%!=)//奇数位与其前面第key[j]位交换
{
temp = str[i-(key[j]-'')];
str[i-(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
cout<<endl; for(int j = ; j >= ; j--) //对于key的前两位
for(int i = ;(i-(key[j]-''))>=; i--)
{
if(i%!=)//奇数位与其前面第key[j]位交换
{
temp = str[i-(key[j]-'')];
str[i-(key[j]-'')] = str[i];
str[i] = temp;
}
}
for(int i = ; i < ; i++)
cout<<str[i]<<" ";
system("pause");
return ;
}

C++将数组的元素顺序随机打乱的更多相关文章

  1. N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列。设计加密解密算法,且要求K<=15*N.

    N个整数(数的大小为0-255)的序列,把它们加密为K个整数(数的大小为0-255).再将K个整数顺序随机打乱,使得可以从这乱序的K个整数中解码出原序列.设计加密解密算法,且要求K<=15*N. ...

  2. MATLAB下数组随机打乱顺序的方法

    一:问题 有两个规模相同的数组,两个数组相同位置的元素一一对应,现在要将两数组的元素同时打乱顺序,并且乱序后的两数组对应位置元素要保持乱序前的对应关系. 二:方法  采用randperm()函数,产生 ...

  3. php保留键随机打乱数组顺序

    最近遇到一个需求,把一个数组随机打乱顺序,我们可以用php的shuffle函数,但是这个函数会把数组的键清空建立新的键,那么我们若想保留键只需要利用shuffle函数再做一下处理就可以了.可以自定义一 ...

  4. ShuffleElements(随机打乱数组中的元素)

    给定一个数组,随机打乱数组中的元素,题意很简单直接上代码: package Array; import java.util.Arrays; import java.util.Collections; ...

  5. C#随机打乱列表List元素顺序

    C#随机打乱列表List项目顺序 以下泛型扩展方法,实现了随机打乱泛型列表List<T>的功能 public static List<t> DisorderItems<t ...

  6. Python代码阅读(第10篇):随机打乱列表元素

    本篇阅读的代码实现了随机打乱列表元素的功能,将原有列表乱序排列,并返回一个新的列表(不改变原有列表的顺序). 本篇阅读的代码片段来自于30-seconds-of-python. shuffle fro ...

  7. js颠倒数组元素顺序reverse()

    颠倒数组元素顺序reverse() reverse() 方法用于颠倒数组中元素的顺序. 语法: arrayObject.reverse() 注意:该方法会改变原来的数组,而不会创建新的数组. 定义数组 ...

  8. 使用Arraylist将数组中元素随机均等乱序分为N个子数组

    使用Arraylist将数组中元素随机均等乱序分为N个子数组 觉得有用的话,欢迎一起讨论相互学习~Follow Me 为了将数组中的元素 随机地 ,均等地, 不重复地 ,划分到N个子数组中 使用Arr ...

  9. js 随机打乱数组

    假如有一个数组: var arr1=['a','b','c','d','e','f','g']; 需要将它进行随机打乱,网上好多都是用: arr1.sort(function(){ return 0. ...

随机推荐

  1. java框架之SpringCloud(1)-微服务及SpringCloud介绍

    微服务概述 是什么 业界大牛 Martin Fowler 这样描述微服务: 参考[微服务(Microservices)-微服务原作者Martin Flower博客翻译]. 下面是关于上述博客中的部分重 ...

  2. [js]js设计模式小结

    js设计模式小结 工厂模式/构造函数--减少重复 - 创建对象有new - 自动创建obj,this赋值 - 无return 原型链模式 - 进一步去重 类是函数数据类型,每个函数都有prototyp ...

  3. 【JVM】-NO.116.JVM.1 -【JDK11 HashMap详解-5-红黑树】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  4. oracle 新建用户后赋予的权限语句

    grant create session,resource to itsys; grant create table to itsys;grant resource to itsys;grant cr ...

  5. 《More Accurate Question Answering on Freebase》文献笔记

    bast-2015-CIKM CIKM全称是International Conference on Information and Knowledge Management 这篇文章主要采用采用lea ...

  6. Docker:使用自定义redis.conf运行redis容器(7)

    演示环境:win7+docker toolbox 1.自定义配置文件 首先在Windows环境下准备好配置文件redis 然后打开Quickstart终端输入命令: cp -rf ~/Desktop/ ...

  7. Spring Boot中JSON参数传递,后台实体接受问题

    1.json参数为json字符串 var data = { name: '超管不是11', password: '123456' }; $.ajax({ type:"post", ...

  8. C++ 打印机设置

    我在网上已不断看到一些网友关于自定义纸张打印的问题,基本上还没有较完美的解决方案,我在这里提供一个WindowsNT/2000/XP下的解决办法,供广大同仁参考.Windows9x/Me下也有解决办法 ...

  9. SliverList , SliverFixedExtentList

    SliverList 高度自动, SliverFixedExtentList 高度固定死. CustomScrollView( slivers:[ SliverList( delegate: Sliv ...

  10. Consul 常用指令

    Consul 常用指令 # 通告地址 -advertise # 集群节点之间通信地址 -bind # 设置服务器为bootstrap模式.在一个dc中只有一个server处于bootstrap模式.一 ...