算法_冒泡排序_笔记(二)
_冒泡排序:
1、算法介绍:冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序):
是一种简单的排序算法,名字由来是因为 最小或最大 的元素会经由交换慢慢“浮”到数列的顶端。
是一种简单的排序算法,名字由来是因为 最小或最大 的元素会经由交换慢慢“浮”到数列的顶端。
2、算法分析:
稳定性:稳定
时间复杂度:O(n^2)
空间复杂度:O(1)
3、算法特点
A、原理易理解,容易编程实现
B、具有稳定性
4、算法实现描述
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
5、代码实现
稳定性:稳定
时间复杂度:O(n^2)
空间复杂度:O(1)
3、算法特点
A、原理易理解,容易编程实现
B、具有稳定性
4、算法实现描述
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
5、代码实现
/*----C++代码原型----*/
void BubbleSort(int* pArray,int length) { for (int i=0;i< length-1;i++) { for (int j=0;j< length - i - 1;j++) { if (pArray[j] > pArray[j + 1]) { int temp = pArray[j]; pArray[j] = pArray[j + 1]; pArray[j + 1] = temp; } } } }
/*----C#代码实现------*/
class Program { static void Main(string[] args) { //定义需要交换的数组 int[] ay = new int[] { 1,3, 4, 2, 5, 7, 6, 10, 9, 8 }; //冒泡排序 BubbleSort(ay); for(int i =0;i<ay.Length;++i) { Console.Write(ay[i]+" "); } Console.ReadKey(); } //冒泡算法函数 public static void BubbleSort(int[] _ay) { //用于存放交换数值的临时变量 int a = 0; //使用2层循环-让前一个数值跟后一个数值进行交换。 for(int i = 0; i < _ay.Length-1;++i) { for(int j = 0;j<_ay.Length-i-1;++j) { //如果前一个比后一个大则交换,反过来同理。 if (_ay[j] > _ay[j + 1]) { a = _ay[j]; _ay[j] = _ay[j + 1]; _ay[j + 1] = a; } } } } }