交换排序

来源:互联网 发布:2017中国并购数据统计 编辑:程序博客网 时间:2024/04/30 10:28

交换排序一般包括冒泡排序,时间复杂度为O(n*n)。快速排序,最好情况和平均情况时间复杂度是O(n*logn),最坏情况是O(n*n)。快速排序可以看我之前专门有一章是专门们讲快速排序的。

C++实现如下:
#ifndef exchangeSort_h#define exchangeSort_h#include<iostream>using namespace std;class exchangeSort{public:    //冒泡排序O(n*n)    void bubbleSort(int a[],int n);    //快速排序最坏情况是O(n*n),最好和平均情况是O(nlog(n))    void quitSort(int a[],int left,int right);};//冒泡排序void exchangeSort::bubbleSort(int a[],int n){    for(int i=0;i<n-1;i++){        bool flag=true;        for(int j=0;j<n-i-1;j++){            if(a[j]>a[j+1]){                int tmp=a[j];                a[j]=a[j+1];                a[j+1]=tmp;                flag=false;            }        }        if(flag){            return;        }    }   }//快速排序void exchangeSort::quitSort(int a[],int left,int right){    if(left>=right){        return;    }    int i=left,j=right;    int tmp=a[left];    while(i!=j){        while(a[j]>=tmp&&j>i){            j--;        }        while(a[i]<=tmp&&j>i){            i++;        }        if(i<j){            int temp=a[i];            a[i]=a[j];            a[j]=temp;        }    }    a[left]=a[i];    a[i]=tmp;    quitSort(a,left,i-1);    quitSort(a,i+1,right);}#endif
0 0
原创粉丝点击