數據結構基礎 排序

冒泡排序

//l爲元素個數
void Bubble_Sort(int *a,int l){
    //記錄,如果有序就不必再繼續操作
    bool change=true;
    for(int i=0;i<l&&change;i++)
    {
        change=false;
        for(int j=0;j<l-1;j++)
        {
            if(a[j]>a[j+1])
            {
                swap(a[j],a[j+1]);
                change=true;
            }
        }
    }
}

快速排序

//快速排序 s爲首元素下標,e爲尾元素下標
void quick_sort(int n[],int s,int e)
{
    if(s>=e) return;
    int i=s,j=e,x=n[s];
    //一趟快速排序
    while(i<j)
    {
        //從右往左找第一個小於x的
        while(i<j&&n[j]>=x)
        {
            j--;
        }
        if(i<j)
        {
            n[i++]=n[j];
        }
        //從左往右找第一個大於x的
        while(i<j&&n[i]<=x)
        {
            i++;
        }
        if(i<j)
        {
            n[j--]=n[i];
        }
    }
    n[i]=x;
    quick_sort(n,s,i-1);
    quick_sort(n,i+1,e);
}


發佈了25 篇原創文章 · 獲贊 9 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章