这两个排序的算法代码都是我从一个叫太阳落雨的博客上找来的,我放到我自己博客,也只是为了把两个排序算法放一起方便,顺便自己记忆,没有抄袭的意思。
一、算法思想
冒泡排序便是指把数组中的一个数与其下一个数进行比较,小的往前挪一个位置,进行几趟比较得到最终结果。而插入排序便是指先把第一个数定为最小数,让其一次次与其余数字相比较,最小的放到第一个位置上。在这里我们数字交换都是放在一个函数里,到时候直接调用就是了。
二、算法代码
#include<iostream>
#include<string>
using namespace std;
void swap(int *a,int *b)//交换数字
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void BubbleSort(int *arr,int num)//冒泡排序
{
bool flag=false;//记录每趟是否存在交换
for(int i=0;i<num;i++)//记录比了几趟
{
flag=false;
for(int j=0;j<num-i-1;j++)
{
if(arr[j]>arr[j+1])
{
flag=true;
swap(&arr[j],&arr[j+1]);
}
}
if(!flag)//不存在交换则直接开始下一趟
break;
}
}
void SelectSort(int *a,int n)
{
int min;
for(int i=0;i<n;i++)
{
min=i;
for(int j=i+1;j<n;j++)//把除第一个数字以外的数与第一个数比较
{
if(a[min]>a[j])
min=j;
}
if(min!=i)//min变化则交换
swap(&a[i],&a[min]);
}
}
int main()
{
//int a[]={4,35,2,65,7};
int *a=new int[5];
for(int i=0;i<5;i++)
cin>>a[i];
BubbleSort(a,5);
cout<<"冒泡排序为:"<<endl;
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
SelectSort(a,5);
cout<<"插入排序为:"<<endl;
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}