#include <iostream>
using namespace std;
//交换数组中两个元素的位置
void swap(int array[],int i,int j)
{
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
//选择排序法
void SelectSort(int array[],int a)
{
for(int i=0;i<a-1;i++)
{
int minindex=i; //假设第i个位置元素为最小值
for(int j=i+1;j<a;j++)
{
if(array[minindex]>array[j])// 发现比假设最小值还小的值
minindex=j;
}
swap(array, i,minindex);
}
}
//冒泡排序法
void BubbleSort(int array[],int a)
{
for(int i=0;i<a-1;i++)
for(int j=0;j<a-i-1;j++)
if(array[j]>array[j+1]) //如果前一个元素大于后一个元素
swap(array, j+1,j);
}
//插入排序
void InsertSort(int array[],int a)
{
for(int i=1;i<a;i++)
for(int j=i;j>0;j--) //往前依次对比,直至第一个数
if(array[j-1]>array[j]) // 如果前一个元素大于后一个元素,交换位置
swap(array,j-1,j);
}
int main()
{
int array[]={12,6,8,55,34,72,6};
int a=sizeof(array)/sizeof(int); //获取数组个数
int n;
cout<<"请选择排序的类型:1.选择排序 2.冒泡排序 3.插入排序"<<endl;
cin>>n;
switch(n)
{
case 1:
SelectSort(array,a);
break;
case 2:
BubbleSort(array,a);
break;
case 3:
InsertSort(array,a);
break;
default:
cout<<"没有这个排序"<<endl;
break;
}
for(int i=0;i<a;i++)
cout<<array[i]<<" "<<endl;
return 0;
}