文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>常用排序算法c++实现

常用排序算法c++实现

时间:2010-06-10  来源:静止的流水

#include<iostream>
#include<string>
using namespace std;

void bubblesort(int *tdata,int number){//冒泡排序数组大小必须传进来,不然在函数里面获得不了数组大小

    int temp;
    for(int i=1;i<number;i++){
        for(int j=number-1;j>=i;j--){
            if(tdata[j]<tdata[j-1]){
                temp=tdata[j-1];
                tdata[j-1]=tdata[j];
                tdata[j]=temp;
            }
        }
    }
}
void changesort(int *data,int number){//交换排序

    int temp;
    for(int i = 0 ; i < number-1;i++){
        for(int j=i+1;j<number;j++){
            if(data[j]<data[i]){
                temp=data[j];
                data[j]=data[i];
                data[i]=temp;
            }
        }
    }
}
void selectsort(int *data,int number){//选择排序

    int temp;
    for(int i=0;i<number-1;i++){
        int flag=data[i];
        int num=i;
        for(int j=i+1;j<number;j++){
            if(data[j]<flag){
                flag=data[j];
                num=j;    
            }
        }
        data[num]=data[i];
        data[i]=flag;
    }
}
void insertsort(int *data,int number){//插入排序有一个移动元素的操作

    int temp;
    for(int i=1;i<number;i++){
        temp=data[i];
        int j=i-1;
        while((temp<=data[j])&&(j>=0)){
            data[j+1]=data[j];
            j--;
        }
        data[j+1]=temp;
    }
}
void quicksort(int *data,int start,int end){//快速排序

    int i=start;
    int j=end;
    int temp;
    int middle=data[(start+end)/2];
    do{
        while(data[i]<middle&&i<end)
            i++;
        while(data[j]>middle&&j>start)
            j--;
        if(i<=j){
            temp=data[i];
            data[i]=data[j];
            data[j]=temp;
            i++;
            j--;
        }
    }while(i<=j);
    if(j>start)//当左边还有值的时候,循环左边

        quicksort(data,start,j);
    if(i<end)//当右边还有值的时候,循环右边

        quicksort(data,i,end);
}
void printout(int *data,int number){
    for(int i = 0 ; i < number;i++)
        cout<<data[i]<<"\n";
}
int main(){
    int data[]={1,9,10,8,9,29,20,38,49,10,3,8};
    int len=sizeof(data)/sizeof(int);
//    bubblesort(data,len);

//    changesort(data,len);

//    selectsort(data,len);

//    insertsort(data,len);

    quicksort(data,0,len-1);
    printout(data,len);
    return 0;
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载