首页 > 代码库 > 入门之快速排序
入门之快速排序
1 /* 2 入门之快速排序 3 时间复杂度:O(nlogn) 4 最坏情况时时间复杂度能达到O(n^2) 5 借鉴自算法导论 6 */ 7 #include<iostream> 8 using namespace std; 9 int a[] = {3,7,8,5,4,6,2,1,3}; 10 void quick_sort(int*,int,int); 11 void swap(int,int); 12 void print(); 13 int main() 14 { 15 print();//排序前 16 quick_sort(a,0,8); 17 print();//排序后 18 } 19 void print() 20 { 21 for(int i=0; a[i]!=0; ++i) 22 cout << a[i] << " "; 23 cout << endl; 24 } 25 void swap(int x,int y) 26 { 27 int t = a[x]; 28 a[x] = a[y]; 29 a[y] = t; 30 } 31 void quick_sort(int a[],int l,int r)//将 <t 和 >=t 的分开 32 { 33 if(l >= r) 34 return ; 35 int t = a[r],j = l-1;//边界问题 36 for(int i=l; i<r; ++i) 37 if(a[i] < t) 38 { 39 ++j; 40 if(i != j) 41 swap(i,j); 42 } 43 swap(j+1,r); 44 quick_sort(a,l,j); 45 quick_sort(a,j+2,r); 46 }
入门之快速排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。