冒泡排序

冒泡排序

排序是指将一个无序序列按某个规则进行排序。

冒泡排序的本质在于交换,即每次通过交换的方式把当前剩余元素的最大值移动到一端,而当剩余元素减少为0时,排序结束。

先来学习如何交换两个数。一般来说,交换两个数需要借助中间变量。

#include<stdio.h>
int main(){
	int a = 1, b = 2;
	int temp = a;
	a = b;
	b = temp;
	printf("a = %d, b = %d\n", a, b);
	return 0;
} 

img1

下面来实现冒泡排序,整个过程执行n-1趟,每一趟从左到右依次比较相邻的两个数。如果大的数在左边,则交换着两个数,当该趟结束时,该趟最大数被移动到当前剩余数的最右边。具体实现如下:

#include<stdio.h>
int main(){
	int a[10] = {3, 1, 4, 5, 2};
	for(int i = 1; i <= 4; i++){ //进行n+1趟比较
	//第i趟时从a[0]到a[n-i-1]都与它们进行下一个数比较
		for(int j = 0; j < 5-i; j++){ //进行到i趟的时候,一共要比较n-i次 
			if(a[j] > a[j+1]){//如果左边的数更大
			int temp = a[j];
			a[j] = a[j+1];
			a[j+1] = temp; 
			}
		} 
	} 
	for(int i = 0; i < 5; i++){//打印出a[i] 
		printf("%d", a[i]);
	}
}

img2

posted @ 2021-03-11 09:37  shiff  阅读(55)  评论(0编辑  收藏  举报