关于快排算法的基本实现
#include<bits/stdc++.h>
using namespace std;
int main()
{
?? ?int n;
? ? scanf("%d",&n);//輸入數組數?
? ? int a[n];
? ? for(int i=1;i<=n;i++){
? ? ? ? scanf("%d",&a[i]);//存入?
? ? }
? ? sort(a+1,a+n+1);//究極快排,簡單明了?
? ? for(int i=1;i<=n;i++)
?? ?{
? ? ? ? printf("%d ",a[i]);//輸出?
? ? }
?? ?return 0;?
?}?
?/* 代碼實現sort快排(數組要定義在主函數外)?
? void sort(int len,int r)//二分思想
{
? ? int mid=a[(len+r)/2];//中間哨兵?
? ? int i=len,j=r;
? ? do{
? ? ? ? while(a[i]<mid) i++;//查找左半部分比中間數大的數
? ? ? ? while(a[j]>mid) j--;//查找右半部分比中間數小的數
? ? ? ? if(i<=j)//如果有一組不滿足排序條件(左小右大)的數
? ? ? ? {
? ? ? ? ? ? swap(a[i],a[j]);//交換(swap真好用)?
? ? ? ? ? ? i++;
? ? ? ? ? ? j--;
? ? ? ? }
? ? }while(i<=j);//這里注意要有=,不然會錯?
? ? if(len<j) qsort(l,j);//遞歸搜索左半部分,遞歸好用是好用,就是有點難想?
? ? if(i<r) qsort(i,r);//遞歸搜索右半部分
}*/?
總結
以上是生活随笔為你收集整理的关于快排算法的基本实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个性头像
- 下一篇: springmvc入门:web.xml编