冒泡排序法
冒泡排序法:思想
以n个人排队为例,从第1个开始,依次比较相邻的两个人是否逆序(高在前矮在后),若逆序则交换这两个人,即第一个人和第二个人比较哦,若逆序,交换两个人,接着比较第二个人和第三个人,若逆序交换连个人,接着比较第三个人和第四个人,若逆序交换两个人。。。。。。,直到第n-1个人和第n个人比较,经过一轮比较后,则把最高的人排到最后,即将最高的人像冒泡一样逐步冒到相应的位置。原n个人的问题转换成n-1个人的排序问题。第二轮比较从第一个人开始,直到第n-2个人和第n-1个人比较;如此,进行n-1轮后队列为有序队列。
#include<iostream> using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; //冒泡排序 for(int i=0;i<n-1;i++) { for(int j=0;j<n-1-i;j++)//n-1-i中i表示比较的轮数,i轮后数组后面i个数已经是最大值并排好序了,所以下一轮比较的时候后卖弄的i个数就不参与比较了 { if(a[j]>a[j+1])//比较相邻的两个数 { int t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } //输出排序后的数组 for(int i=0;i<n;i++) cout<<a[i]<<" "; }