/*
* @Issue: 数组排序:从键盘读入多个整数,要求对这些整数实现从小到大或从大到小排序,
屏幕上输出排序结果。冒泡、选择、插入三种排序算法都可以
* @Author: 一届书生
* @LastEditTime: 2020-02-21 13:35:46
*/
#include<iostream>
#include<stdio.h>
using namespace std;
#define num 10
int a[100];//待排序数组
// 冒泡排序 从小到大
void bubble(int *p,int len){
int t=0;
for(int i=0;i<len-1;i++){
for(int j=i+1;j<len;j++){
if(*(p+i)>*(p+j)){ //若想从大到小 改成<即可
swap(*(p+i),*(p+j));
}
}
}
}
// 插入排序
void insert(int *p , int len){
int i,j,key;
for(i=1;i<len;i++){ //从第二个数开始判断
key=*(p+i); //取一下第二个数
j=i-1; //遍历第i个数之前的数
while(j>=0&&*(p+j)>key){
*(p+j+1)=*(p+j);
j--;
}
*(p+j+1)=key;
}
}
// 选择排序
void select(int *p , int len){
int minindex, temp;
for(int i = 0; i<len-1;i++)
{
minindex = i;
for(int j = i+1; j<len; j++)
{
if(*(p+j)<*(p+minindex))
minindex = j; //遍历余下的数组 找一个最小的,与第i个位置的数交换
}
swap(*(p+i),*(p+minindex));
}
}
int main(){
for(int i=0;i<num;i++){
cin>>a[i];
}
// bubble(a,num); //冒泡排序
// insert(a,num); //插入排序
select(a,num);
for(int i=0;i<num;i++){
cout<<a[i]<<" ";
}
return 0;
}