#include <stdio.h>
#include <iostream>
using namespace std;
//插入法排序
void InsertSort(int arr[],int num)
{
for (int i=1;i<num;i++) //需要插入num-1次
{
int temp = arr[i];//待插入的元素
//在有序区域查找插入的位置
int j = i-1; //用于标志插入的位置
for (j = i-1;j>=0;j--) //遍历前面的有序区域,逐个比较,寻找插入的位置
{
if (arr[j]<temp) //如果有序区域的数值比待比较的数值要小,则把有序区域的这个数值往后移动
{
arr[j+1] = arr[j]; //如果
}
else //如果有序区域比较的这个数值大于或等于待插入的temp,说明该位置的后面就是要插入的位置,跳出循环
{
break;
}
}
arr[j+1] = temp;
}
}
//选择法排序
void SelectSort(int arr[],int num)
{
for (int i=0;i<num-1;i++) //总共需要排序num-1次
{
int index = i; //index用于代表无序区最大值的索引
for (int j = i+1;j<num;j++) //遍历无序区域,找到无序区域最大值的索引
{
if (arr[j]>arr[index])
{
index = j;
}
}
//把无序区的最大值放到无序区域的第一个位置
if (index != i)
{
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
//冒泡法排序
void BubbleSort(int arr[],int num)
{
for (int i=0;i<num-1;i++) //总共需要冒泡num-1次
{
for (int j=num-1;j>i;j--) //从无序区中遍历冒泡
{
if (arr[j]>arr[j-1]) //交换顺序
{
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
}
void PrintArray(int arr[],int num)
{
for (int i=0;i<num;i++)
{
cout<< arr[i] << " ";
}
}
int main()
{
int arr[5] = {1,6,3,8,9};
//InsertSort(arr,5); //插入法排序
//SelectSort(arr,5); //选择法排序
BubbleSort(arr,5); //冒泡法排序
PrintArray(arr,5);
system("pause");
return 0;
}