冒泡排序,插入排序,基数排序,交互排序算法

来源:互联网 发布:数据同化 知乎 编辑:程序博客网 时间:2024/05/17 05:05

一、实验内容

1、输入2-10个不为零的正整数,遇到0,代表输入结束。

2、数字选择排序方法,1-冒泡排序、2-插入排序、3-基数排序。

3、使用所选排序方法的排序,结果输出所用方法以及结果,每个数之间用“,”隔开,中间不要有空格。

//============================================================================// Name        : test02_201100300097.cpp// Author      : ZhengDujin// Created on  : 2012-10-27// Copyright   : Your copyright notice// Compiler    : MinGCC// Language    : C/C++// Description : test02_201100300097 in C++, Ansi-style//============================================================================#include <iostream>using namespace std;void BubbleSort(int *a,int len){//冒泡排序int i,j,temp;for(i=0;i<len-1;i++){for(j=len-1;j>i;j--){if(a[j-1]>a[j]){temp=a[j-1];a[j-1]=a[j];a[j]=temp;}}}for(i=0;i<len;i++){if(i!=len-1)    cout<<a[i]<<",";    else    cout<<a[i];}}void InsertionSort(int *a,int len){//插入排序int i,j,t;for(i=1;i<len;i++){t=a[i];j=i-1;while(j>=0&&t<a[j]){a[j+1]=a[j];j--;}a[j+1]=t;}for(i=0;i<len;i++){if(i!=len-1)    cout<<a[i]<<",";    else    cout<<a[i];}}int maxbit(int data[],int n){    int d=1;    for(int i=0;i<n;i++){        int c=1;        int p=data[i];        while(p/10){            p=p/10;            c++;        }        if(c>d)         d=c;    }    return d;}void RadixSort(int data[],int n){//基数排序int tmp[n];int count[n];    int d=maxbit(data,n);        int r=1;    for(int j=0;j<d;j++){        for(int i=0;i<10;i++)            count[i]=0;        for(int i=0;i<n;i++){            int k=data[i]/r;            int q=k%10;            count[q]++;        }        for(int i=1;i<10;i++){            count[i]+=count[i-1];        }        for(int j=n-1;j>=0;j--){            int p=data[j]/r;            int s=p%10;            tmp[count[s]-1]=data[j];            count[s]--;        }        for(int i=0;i<n;i++){            data[i]=tmp[i];        }        r=r*10;    }    for(int i=0;i<n;i++){if(i!=n-1)    cout<<data[i]<<",";    else    cout<<data[i];}}int main(){int num=10,temp,choice,size=10;    int tlist[num];    cout<<"Input"<<endl;    for(int i=0;i<=num-1;i++){cin>>temp;if(temp==0){size=i;    break;    }tlist[i]=temp;}int list[size];for(int i=0;i<=size-1;i++){list[i]=tlist[i];}cout<<"1-冒泡排序,2-插入排序,3-基数排序"<<endl;cin>>choice;cout<<"Output"<<endl;if(choice==1){cout<<"冒泡排序"<<endl;BubbleSort(list,size);    }if(choice==2){cout<<"插入排序"<<endl;InsertionSort(list,size);}if(choice==3){cout<<"基数排序"<<endl;  RadixSort(list,size);}cout<<endl;cout<<"End"<<endl;       return 0;}


原创粉丝点击