数据结构之排序算法

实验目的:
掌握三种排序方法的实现思想。

实验内容
1、 最多接受20个不为零的正整数进行排序,如果中间输入0则代表提前结束输入,0之前输入几个数就用几个数参与排序,0不参与排序。
2、 数字选择排序方法,1-Bubble Sort,2-Insert Sort,3-Radix Sort(注意大小写要区分)。
3、 基数排序能够仅仅实现小于10的正整数的排序。如果输入的数据有大于9数据,基数排序不再排序,直接输出一个0后结束程序。
4、 使用所选排序方法的排序,结果输出所用方法以及结果,每个数之间用“,”隔开,中间不要有空格。
5、 输入输出请严格按下面要求的格式实现,不能少任何一行文字。

#include <iostream>
using namespace std;
void bubble(int *a,int n){
	for(int i=0;i<n;i++){
		for(int j=0;j<n-i-1;j++){
			if(a[j]>a[j+1]){
			int temp=a[j];
			a[j]=a[j+1];
			a[j+1]=temp;
			}
		}
		}
		cout << "Bubble Sort" << endl;
		for(int k=0;k<n-1;k++){
			cout << a[k] << ",";
		}
		cout << a[n-1] <<endl;
			return;
		
	}
void insert(int *a,int n){
	for (int i = 1; i < n; i++)
	{
		for (int j = i - 1; j >= 0 && a[j + 1] < a[j]; j--)
		{ 
			int temp=a[j];
			a[j]=a[j+1];
			a[j+1]=temp;
		}
	}
cout << "Insert Sort" << endl;
		for(int k=0;k<n-1;k++){
			cout << a[k] << ",";
		}
		cout << a[n-1] <<endl;
			return;
}
void radix(int *a,int n){
	for(int i=0;i<n;i++){
		if(a[i]>9){
				cout << "Radix Sort" << endl;
			cout << 0 << endl;
			return;
		}
	}
	int array[9][20];
	int count[9];
	for(int b=0;b<9;b++){
		count[b]=0;
	}
	for(int i=0;i<n;i++){
		switch(a[i]) {
			case 1 :
				array[0][count[0]++]=a[i];
				break; 
			case 2 :
				array[1][count[1]++]=a[i];
				break; 
			case 3 :
			    array[2][count[2]++]=a[i];
			    break; 
		    case 4 :
				array[3][count[3]++]=a[i];
				break; 
			case 5 :
				array[4][count[4]++]=a[i];
				break; 
		case 6 :
				array[5][count[5]++]=a[i];
				break; 
				case 7 :
				array[6][count[6]++]=a[i];
				break; 
				case 8 :
				array[7][count[7]++]=a[i];
				break; 
				case 9 :
				array[8][count[8]++]=a[i];
				break; 
				default :
				;
	}
}int number=0;
	for(int j=0;j<9;j++){
		
		if(count[j]!=0){
			for(int k=0;k<count[j];k++)
				a[number++]=array[j][k];
			}
		
		}
		cout << "Radix Sort" << endl;
		for(int c=0;c<n-1;c++){
			cout << a[c] << ",";
		}
		cout << a[n-1] <<endl;
			return;
	}	


int main(){
	int array[20];
	int element;
	int count=0;
	cout << "Input" << endl; 
	cin >> element;
	while(element!=0){
		array[count++]=element;
		if(count==20)
		break;
		cin >> element;
	} 
	cout << "1-Bubble Sort,2-Insert Sort,3-Radix Sort" << endl;
	int flag;
	cin >> flag;
	cout << "Output" << endl;
	switch(flag){
		case 1:
			bubble(array,count);
			break;
		case 2:
			insert(array,count);
			break;
		case 3:
		    radix(array,count);
	}
	cout << "End0"   << endl;
	system("pause");
	return 0; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值