首页 > 编程语言 >C++黑马程序员——P251-254. 常用排序算法 sort,random_shuffle,merge,reverse

C++黑马程序员——P251-254. 常用排序算法 sort,random_shuffle,merge,reverse

时间:2023-05-04 14:33:36浏览次数:50  
标签:sort begin shuffle reverse ++ back push end include

  • P251. 常用排序算法——sort
  • P252. ...——random_shuffle
  • P253. ...——merge
  • P254. ...——reverse
  • P251. sort

   

 

  

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 #include <functional>    //用greater
 5 using namespace std;
 6 
 7 //排序算法 sort
 8 void test01()
 9 {
10     vector<int>v;
11     v.push_back(20);
12     v.push_back(10);
13     v.push_back(50);
14     v.push_back(40);
15     v.push_back(30);
16 
17     //利用sort升序
18  sort(v.begin(), v.end());
19     //打印输出
20     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
21     {
22         cout << *it << " ";
23     }
24     cout << endl;
25 
26     //降序
27     sort(v.begin(), v.end(), greater<int>());
28     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
29     {
30         cout << *it << " ";
31     }
32     cout << endl;
33 }
34 
35 int main()
36 {
37     test01();
38     return 0;
39 }

运行结果:

  

 

  • P252. random_shuffle

 

  

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 #include <ctime>    //为了添加随机数种子的
 5 using namespace std;
 6 
 8 void test01()
 9 {
10     srand((unsigned int)time(NULL));    //添加随机数种子,不然每次用random_shuffle打乱的顺序都是一样的
11 
12     vector<int>v;
13     for (int i = 0; i < 10; i++)
14     {
15         v.push_back(i);
16     }
17 
18     //利用洗牌算法 打乱顺序
19  random_shuffle(v.begin(), v.end());
20 
21     //打印输出
22     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
23     {
24         cout << *it << " ";
25     }
26     cout << endl;
27 
28 }
29 
30 int main()
31 {
32     test01();
33     return 0;
34 }

运行结果:

  

使用时记得添加随机数种子

 

  • P253. merge

  

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 //merge
 7 void test01()
 8 {
 9     vector<int>v1;
10     vector<int>v2;
11 
12     //原容器需要是有序序列
13     for (int i = 0; i < 10; i++)
14     {
15         v1.push_back(i);
16         v2.push_back(i + 1);
17     }
18 
19     //准备一个目标容器
20     vector<int>vTarget;
21     //提前给目标容器分配空间(否则运行时会报错)
22     vTarget.resize(v1.size() + v2.size());
23 
24  merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
25 
26     for (vector<int>::iterator it = vTarget.begin(); it != vTarget.end(); it++)
27     {
28         cout << *it << " ";
29     }
30     cout << endl;
31 }
32 
33 int main()
34 {
35     test01();
36     return 0;
37 }

运行结果:

  

 

  • P254. reverse

  

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 //reverse
 7 void test01()
 8 {
 9     vector<int>v;
10     v.push_back(1);
11     v.push_back(3);
12     v.push_back(5);
13     v.push_back(2);
14     v.push_back(4);
15     
16     cout << "反转前:" << endl;
17     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
18     {
19         cout << *it << " ";
20     }
21     cout << endl;
22 
23  reverse(v.begin(), v.end());
24     cout << "反转后:" << endl;
25     for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
26     {
27         cout << *it << " ";
28     }
29     cout << endl;
30 }
31 
32 int main()
33 {
34     test01();
35     return 0;
36 }

运行结果:

  

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

标签:sort,begin,shuffle,reverse,++,back,push,end,include
From: https://www.cnblogs.com/wjjgame/p/17341055.html

相关文章

  • [Javascript] Avoid mutation, Array.prototype.toSorted() vs sort()
    sort(),mutatestheoriginalarray,andreturnthereferencetooriginalarrayandsorted.The toSorted() methodof Array instancesisthe copying versionofthe sort() method.Itreturnsanewarraywiththeelementssortedinascendingorder.const......
  • [Javascript] Avoid mutation, Array.prototype.toReversed() vs reverse()
    reverse()mutatestheoriginalarray,returnthereferencepointtotheoriginalarray.The toReversed() methodof Array instancesisthe copying counterpartofthe reverse() method.Itreturnsanewarraywiththeelementsinreversedorder.constite......
  • reverse_3
    查壳拖进32位IDA,老办法随便进入一个,进入伪代码int__cdeclmain_0(intargc,constchar**argv,constchar**envp){size_tv3;//eaxconstchar*v4;//eaxsize_tv5;//eaxcharv7;//[esp+0h][ebp-188h]charv8;//[esp+0h][ebp-188h]signed......
  • reverse_2
    查壳(查位数)64位,拖进IDA方法依旧,F5看伪代码int__cdeclmain(intargc,constchar**argv,constchar**envp){intresult;//eaxintstat_loc;//[rsp+4h][rbp-3Ch]BYREFinti;//[rsp+8h][rbp-38h]__pid_tpid;//[rsp+Ch][rbp-34h]chars2[24];......
  • reverse_1
    依旧先查壳(看几位)没壳64位考虑IDA或者OD都行(看个人习惯,OD需要很大的功底)建议先从IDA开始拖入IDA看看发现没有想要的东西-->shift+F12-->(可以ctrl+F)-->也可一个个找关键字flag发现rightflag-->点进去在数据段上(不能操作)没有任何作用-->ctrl+x(查看是谁调用了......
  • B. Sort with Step
    题意:    给定一个长度为n的数组,任意两个数如果满足i-j的绝对值等于k则可以互相交换,若不能通过此操作实现数组排序,则需要使用次数来强制交换,次数小于等于1输出次数,否则输出-1.分析:    最优情况下,找出需要操作的数的数量然后两两交换是次数最少的。代码:#incl......
  • Python 希尔排序(Shell Sort)原理以及应用
    希尔排序的原理:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序的原理是将待排序的序列按照一定间隔分成若干个子序列,对每个子序列使用插入排序进......
  • pop 出栈,sorted临时排序,容器类型的数据,zip函数
    divmod(a,b)返回一对商和余数,结果和(a//b,a%b)一致 字典是Python中唯一的映射类型。 Python的源文件以"py"为扩展名,有python.exe解释运行,可在控制台下运行。"pyw"是图形开发用户接口(GUI)文件的扩展名,作为桌面应用程序,这种文件用于开发图形界面的,由pythonw.exe解释......
  • List集合排序 sort方法
    List集合排序sort方法:publicstatic voidsort(List list):将集合中元素按照默认规则排序。publicstatic voidsort(List list,Comparator<?superT>):将集合中元素按照指定规则排序。sort方法的重载使用11.字符串作为集合中的类型进行排序publicclassDe......
  • 使用sortabl对表格进行拖拉拽重新排序
    1.安装依赖npminstallsortablejs--save2.包裹拖拽内容<divclass="draggable"style="padding:20px">需要拖拽的内容,如表格</div>3.定义拖拽方法 //列拖拽  columnDrop(){    constwrapperTr=document.querySelector('.draggable.el-ta......