【算法导论】冒泡排序法

简介: 冒泡排序法 时间复杂度:O(n*n) 基本思想:从数组最后一个元素开始,依次与前一个元素比较,若比前一个元素小,则与之交换位置,然后再与当前前一个元素比较,直到遇到比它大的元素为止。

冒泡排序法

时间复杂度:O(n*n)
基本思想:从数组最后一个元素开始,依次与前一个元素比较,若比前一个元素小,则与之交换位置,然后再与当前前一个元素比较,直到遇到比它大的元素为止。例如:假设数组为:a[5]={3,4,2,5,1};则运算过程为:首先1与5比较,由于1<5,从而交换位置,数组变为a[5]={3,4,2,1,5};然后1与当前前一个元素2比较,一直重复上述操作,经过一次循环后,数组变为a[5]={1,3,4,2,5};第二次循环从倒数第二个元素开始……,总共循环n-1次就可以得到正确结果。总的来说,首先将最小的元素放在数组前面,然后放次最小的元素,依此类推。上述过程的图解为:
3 4 2 5 1
3 4 2 1 5
3 4 1 2 5
3 1 4 2 5
1 3 4 2 5
注:这里的红色为要进行比较的元素。

具体实现如下:
#include<stdio.h>

void BubbleSort(int* arrayA,int n);

void main()
{
	int arrayA[]={2,3,5,6,2,7,1,5};
	int n=sizeof(arrayA)/sizeof(int);

	BubbleSort(arrayA,n);

	for(int i=0;i<n;i++)
		printf("%d ",arrayA[i]);
}

void BubbleSort(int* arrayA,int n)
{
	for(int i=0;i<n-1;i++)
	{
		for(int j=n-1;j>i;j--)//j>i即可是因为前面的元素已经排好了
		{
			int temp=0;
			if(arrayA[j]<arrayA[j-1])
			{
				temp=arrayA[j];
				arrayA[j]=arrayA[j-1];
				arrayA[j-1]=temp;
			}
			

		}	
	}
}

注意:我是在vs2008上运行的,与vc 6.0有点区别,主要是循环体中的循环变量的作用域,出错体现在循环变量的重复定义上。例如:在vs2008或vs2010上,程序为:

#include<stdio.h>
void main()
{
int i=0;
for(int i=0;i<5;i++)
printf("%d ",i);
}

则在VC 6.0上需改为:

#include<stdio.h>
void main()
{
int i=0;
for(i=0;i<5;i++)
printf("%d ",i);
} 


原文:http://blog.csdn.net/tengweitw/article/details/9707525

作者:nineheadedbird




目录
相关文章
|
3月前
|
搜索推荐 算法 Go
Go语言数组排序(冒泡排序法)—— 用最直观的方式掌握排序算法
本案例介绍使用冒泡排序对整数数组进行升序排序的实现方法,涵盖输入处理、错误检查与排序逻辑。通过代码演示和算法解析,帮助理解排序原理及Go语言切片操作,为学习更复杂排序算法打下基础。
|
3月前
|
搜索推荐
冒泡排序与其它排序算法比较
本内容比较了冒泡排序、选择排序和插入排序的特性。三者时间复杂度均为O(n²),但交换次数和稳定性不同。冒泡排序稳定,交换次数多,可优化至O(n);选择排序不稳定,交换次数少;插入排序交换次数最少,且二者均为稳定排序。对于有序数组,冒泡和插入可优化提升效率。
49 0
|
11月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
248 67
|
12月前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
12月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
154 5
|
12月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
350 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
12月前
|
搜索推荐
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
185 1
|
12月前
|
搜索推荐 C语言
排序算法--冒泡排序
排序算法--冒泡排序
65 0
|
12月前
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
|
12月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
128 0

热门文章

最新文章