冒泡排序&选择排序

来源:互联网 发布:sql server 分组 编辑:程序博客网 时间:2024/05/17 01:20

       这两个排序的算法代码都是我从一个叫太阳落雨的博客上找来的,我放到我自己博客,也只是为了把两个排序算法放一起方便,顺便自己记忆,没有抄袭的意思。

一、算法思想

     冒泡排序便是指把数组中的一个数与其下一个数进行比较,小的往前挪一个位置,进行几趟比较得到最终结果。而插入排序便是指先把第一个数定为最小数,让其一次次与其余数字相比较,最小的放到第一个位置上。在这里我们数字交换都是放在一个函数里,到时候直接调用就是了。

二、算法代码

#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;}


0 0
原创粉丝点击