Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1681136
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: C/C++

2010-06-10 20:34:39

#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 shellsort(int *data,int len){
 int d = len;
 while(d>1){
  d = (d+1)/2;
  for(int i = 0;i   if(data[i+d]    int temp = data[i+d];
    data[i+d] = data[i];
    data[i] = temp;
   }
  }
 }
}

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;
}


阅读(850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~