冒泡,插入,选择排序

/*
 * @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;
}