ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

算法篇

2022-07-01 12:01:16  阅读:150  来源: 互联网

标签:do int Quicksort while 算法 vector Quicksort1


我是一个个人小开发,博客只供自己记录一些技能,以免忘记。勿喷

 

 

 

 

快速排序实现

 1 #include <iostream>
 2 #include <vector>
 3 
 4 using namespace std;
 5 
 6 
 7 void Quicksort(vector<int> &q,int l,int r)
 8 {
 9     if( l >= r) return;
10     int i = l - 1 , j = r + 1 , x = q[( l + r ) / 2] ;
11     while( i < j )
12     {
13         do i++; while (q[i] < x);
14         do j--; while (q[j] > x);
15         if(i < j ) swap(q[i],q[j]);
16     }
17     Quicksort(q,l,j);Quicksort(q,j+1,r);
18 }
19 
20 void Quicksort1(vector<int> &q,int l,int r)
21 {
22     if( l >= r) return;
23     int i = l - 1 , j = r + 1 , x = q.at(( l + r ) / 2) ;
24     while( i < j )
25     {
26         do i++; while (q.at(i) < x);
27         do j--; while (q.at(j) > x);
28         if(i < j ) swap(q.at(i),q.at(j));
29     }
30     Quicksort1(q,l,j);Quicksort1(q,j+1,r);
31 }
32 
33 
34 int main(int argc,char **argv)
35 {
36     //vector<int> p = {15,19,2,5,17,20,1,5,8,8,3,6,4};
37     vector<int> p = {4,1,1,1,1,5,6};
38 
39     for(auto z : p ) cout << z << "    , ";
40     cout << endl <<"======================|========================"<< endl;
41 
42 
43     vector<int> a(p);
44     Quicksort1(a,0,a.size() - 1 );
45     for(auto z : a ) cout << z << "    , ";
46     cout << endl <<"=============================================="<< endl;
47 
48     return 0;
49 }

数据多的时候比冒泡快。所以理论上是快速排序快

还有vector使用[]重载的时候不检查越界,测试越过两个就会报错,不理解,还是用at好些

 

标签:do,int,Quicksort,while,算法,vector,Quicksort1
来源: https://www.cnblogs.com/jiafushunaixiaomeng/p/16434105.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有