冒泡排序
不多说,看代码,就是把最大的数字或者最小的数字沉到最右边,最后输出数组
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
int a[1000];
int n,t,k;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}//输入你要排序的数字
for(int i=0;i<n-1;i++) //一共从头开始比较n-1趟
{
for(int j=0;j<n-i-1;j++) //每趟比较n-i-1次
{
if(a[j]>a[j+1])
//如果左边的数字比右边大,交换两个数字的位置,这一块也可用函数swap代替,但是要加上头文件“#include<math.h>”
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
//swap(a[j],a[j+1]);
}
}
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
} //输出排序后的数字
return 0;
}
选择排序
第一次,从初始序列中找最小(大)的元素,然后与第一个元素交换位置,接着从第二个元素开始的剩余序列中,再找最小(大)的元素,然后与第二个元素交换位置......选择排序就是每次找一个最小(大)的元素,与前面的元素交换位置,最后输出序列。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int a[105];
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
//选择法排序
for(int i=1;i<n;i++)
{
int pos=i;
for(int j=i+1;j<=n;j++)
{
if(a[j]<a[pos])
{
pos=j;
}
} //找最小的元素
swap(a[i],a[pos]); //交换位置
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
冒泡排序和选择排序的区别是:
冒泡排序是每次交换相邻的两个元素,然后把最大(小)的元素放到序列的最右端
选择排序是找最小(大)的元素,然后与前面的元素交换位置,把最小(大)的元素放到序列的最左端
插入排序
插入排序是每次选择一个元素,然后在它前面的序列中找到它的合适位置,但是不同于前两种排序,插入排序,在找合适的位置时,它前面的序列都是有序的
#include<iostream>
using namespace std;
int main()
{
int a[105];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
int key=a[i]; //记录这个元素的值
int j=i-1;
while(j>=0&&key<a[j])
{
a[j+1]=a[j]; //交换位置,每次都向右挪
j--;
}
a[j+1]=key; //把这个元素的值放在合适的位置
}
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)