首页 > 代码库 > 交换类排序:冒泡,快速(递归与非递归)
交换类排序:冒泡,快速(递归与非递归)
<pre name="code" class="cpp">交换类排序:1:冒泡排序O(n^2),空间复杂度O(1) 2:快速排序O(n乘以log以2为底,n的对数),空间复杂度O(log以2为底,n的对数) //冒泡排序 void BubbleSort(int R[],int n) { int i,j,tmp,flag; for(i=0;i<n-1;i++) { flag=0; for(j=n-1;j>i;j--) { if(R[j]<R[j-1]) { tmp=R[j]; R[j]=R[j-1]; R[j-1]=tmp; flag=1; } } if(flag==0) return; } } //快速排序 void QuickSort(int R[],int s,int t) { int i=s,j=t; int tmp; if(s<t) { tmp=R[s]; while(i!=j) { while(j>i && R[j]>tmp) j--; R[i]=R[j]; while(i<j && R[i]<tmp) i++; R[j]=R[i]; } R[i]=tmp;//最后一个[i]给了别人,此处的值没有用了,用来存放基准值 QuickSort(R,s,i-1); QuickSort(R,i+1,t); } } //快速排序的非递归算法 void QuickSort(int R[],int n) { int i,j,low,high,top=-1; int temp; struck { int low; int high; }St[MAXITEM]; top++; St[top].low=0; St[top].high=n-1; while(top>-1) { //出栈 low=St[top].low; high=St[top].high; top--; i=low; j=high; if(low<high) { temp=R[low]; while(i!=j) { while(i<j && R[j]>temp) j--; R[i]=R[j]; while(i<j && R[i]<temp) i++; R[j]=R[i]; } R[i]=temp; //入栈 top++; St[top].low=low; St[top].high=i-1; top++; St[top].low=i+1; St[top].high=high; } } }
交换类排序:冒泡,快速(递归与非递归)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。