交換排序

1冒泡排序

void bubblesort(elemtype a[],int n){
    for(int i=0;i<n-1;i++){
    flag=false;
    for(j=n-1;j>i;j--)
 {
     if(A[j-1].key>A[j].key)         //若爲逆序
        {swap(A[j-1],A[j]); 
            flag=true;
        }  
    if(flag==false)       //本趟遍歷後沒有發生交換,說明表已經有序
     return;
}
 }

}

2快速排序

每趟有一個元素放在了最終位置上

void quicksort(int a[],int low,int high){

    if(low<high){
        int location=partion(a,low,high);
        quicksort(a,low,location-1);
        quicksort(a,lacation+1,high);
    }
}

int partion(int a[],int low,int high){
    int pivot=a[low];
    while(low<high){
        while(low<high && a[high]>=pivot)  --high;
        a[low]=a[high];
        while(low<high && a[low]<=pivot)  ++low;
        a[high]=a[low];


}
a[low]=pivot;
return low;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章