1.基本思想

两个数比较大小,较大的数下沉,较小的数冒起来。

2.过程

·每次比较相邻的两个数,如果第二个数小,就交换位置。(升序或降序)

·然后两两比较,一直到比较最后的数据。最终最小(大)数被交换到开始(结束)位置,这样第一个最小(大)数的位置就排好了。

·继续重复上述过程,依次将第2,3…n-1个最小数排好位置。

动图过程:

举例说明:【1 4 3 2】

第一趟排序:

第一次排序:1和4比较,1小于4,不交换位置。 【1 4 3 2】

第二次排序:4和3比较,4大于3,交换位置。 【1 3 4 2】

第三次排序:4和2比较,4大于2,交换位置。 【1 3 2 4】

第二趟排序:

第一次排序:1和3比较,1小于3,不交换位置。 【1 3 2 4】

第二次排序:3和2比较,3大于2,交换位置。 【1 2 3 4】

第三次排序: 3和4比较,3小于4,不交换位置。 【1 2 3 4】

第三趟排序:

第一次排序,1和2比较,1小于2,不交换位置。 【1 2 3 4】

第二次排序,2和3比较,2小于3,不交换位置。 【1 2 3 4】

第三次排序,3和4比较,3小于4,不交换位置。 【1 2 3 4】


2.注意点

在冒泡排序中,两个数比较大小,只需要比较一次就行。

n个数比较大小(选出最大或者最小),比较n-1次就行。


3.参考代码
#include<iostream>
using namespace std;
int main()
{
	 int arr[]={12,45,13,88,79,11,52}; //定义数组
	 int len =sizeof(arr) / sizeof(arr[0]); //测量数组长度 
	 int length = len-1; //排序总轮数() 
	 for(int i=0;i<length;i++)
	 {
	 	for(int j=0;j<length-i;j++)
	 	{
			if (arr[j]>arr[j+1])  //如果前一个数比后一个大 
			{
				int temp = arr[j+1];
				arr[j+1] = arr[j];
				arr[j] =temp; 
			} 
	    }
	    /*
		for(int i=0;i<length;i++)
	 		cout<<arr[i]<<" "; 
	 	cout<<endl;
		*/
	 }
	 //输出
	 for(int i=0;i<length;i++)
	 	cout<<arr[i]<<" "; 
	 return 0; 
}
4.问题及改进

由程序输出可以看出,在第5次的时候已经排序完了,后面的元素都没有交换过,也就说后面几次排序都是没有意义的。这样就可以改进一下排序算法,设置一个元素位置交换标志记录本次排序是否有位置发生变化,如果没有则认为已经排序完了,不需要再执行了。

#include<iostream>
using namespace std;
int main() {
	int arr[]= {12,45,13,88,79,11,52,66}; //定义数组
	int len =sizeof(arr) / sizeof(arr[0]); //测量数组长度
	int length = len-1; //排序总轮数
	bool flag = true; //标志位,记录每次排序是否有元素位置交换
	for(int i=0; i<length && flag!=false; i++) { //如果上次排序元素位置未改变过,
		flag = false; //每次排序前,标志位复位
		for(int j=0; j<length-i; j++) {
			if (arr[j]>arr[j+1]) { //如果前一个数比后一个大
				flag = true; //发生位置交换,改变标志位
				int temp = arr[j+1];
				arr[j+1] = arr[j];
				arr[j] =temp;
			}
		}
		 /*
		for(int i=0;i<length;i++)
	 		cout<<arr[i]<<" "; 
	 	cout<<endl;
		*/
	}
	
	//输出
	 for(int i=0;i<length;i++)
	 	cout<<arr[i]<<" "; 
	return 0;
}


返回目录:算法


分类: 算法

16 条评论

erotik · 2020年11月12日 下午5:10

If you want to use the photo it would also be good to check with the artist beforehand in case it is subject to copyright. Best wishes. Aaren Reggis Sela

    左手指月 · 2020年11月14日 下午5:47

    Thank you for your message,I will replace these pictures.

sikis izle · 2020年11月13日 下午7:56

I like this website its a master peace ! Glad I detected this on google . Cybil Ad Mayfield

erotik izle · 2020年11月13日 下午10:06

I really like and appreciate your article. Much thanks again. Awesome. Franciska Dalis Monty

erotik izle · 2020年11月14日 上午6:11

Undeniably believe that which you stated. Your favorite justification appeared to be on the internet the simplest thing to be aware of. Ruth Abey Barclay

erotik izle · 2020年11月14日 上午8:19

Hi, of course this piece of writing is actually good and I have learned lot of things from it on the topic of blogging. Sarene Garner Killian

erotik izle · 2020年12月8日 上午11:13

If you wish for to obtain a good deal from this paragraph then you have to apply such methods to your won webpage. Aarika Panchito Pansy

erotik izle · 2020年12月9日 上午9:17

No matter if some one searches for his essential thing, thus he/she wants to be available that in detail, so that thing is maintained over here. Mirilla Hodge Fergus

erotik film izle · 2020年12月9日 下午2:09

As I website possessor I think the subject matter here is really superb, regards for your efforts. Rubie Creigh Januisz

erotik izle · 2020年12月9日 下午3:45

Hi, its fastidious piece of writing concerning media print, we all understand media is a wonderful source of information. Atlante Peterus Sadoc

erotik izle · 2020年12月9日 下午6:13

Some truly nice and utilitarian info on this site, also I believe the style and design has got good features. Hayley Shelden Byram

erotik izle · 2020年12月9日 下午9:13

Excellent pieces. Keep writing such kind of info on your page. Lacie Gabie Manly

erotik · 2020年12月10日 上午12:39

I got what you intend,saved to my bookmarks, very nice internet site. Felisha Ernie Marmaduke

porno · 2020年12月10日 上午3:53

Hi there mates, its impressive post concerning teachingand fully explained, keep it up all the time. Carin Orbadiah Koressa

here · 2020年12月11日 下午11:15

Greetings from Los angeles! I’m bored to tears at
work so I decided to check out your site on my iphone during lunch break.

I love the info you present here and can’t wait to take a look
when I get home. I’m surprised at how fast your blog loaded on my phone ..

I’m not even using WIFI, just 3G .. Anyhow, amazing
site!

clarion hotel malmo live · 2020年12月13日 上午4:01

Really when someone doesn’t be aware of afterward its up to other users that they will help, so here it occurs.

评论已关闭。