冒泡排序
原理:
冒泡排序是对数组里相邻两个元素的大小进行比较,二者之间较小的元素向前调整位置。从第一个元素开始,相邻两个元素为一组()比较大小,根据比较的结果来判断是否需要交换位置。完成一次比较后,向右移动一个位置,即下标i加1。直到抵达数组中最后一个元素。这一过程类似水中气泡升腾,因此形象地称为这种排序算法为“冒泡排序”。
过程步骤:
- 比较相邻两个元素大小,前一个元素大于后一个元素,交换两元素位置。
- 依次向右平移一个单位,两两相邻元素进行比较。
- 重复步骤1和2,直到对数组中所有元素比较完成。
算法分析:
时间复杂度:,假设数组长度为N,则需要N-1次排序,每次进行N-i次比较,。
空间复杂度:冒泡算法运行时仅额外需要一个用于交换两个元素位置的临时变量,该变量与数组规模N无关,因此其空间复杂度为。
C#代码示例:
/*
Bubble Sort
冒泡排序
*/
using System;
namespace Buble_sort
{
class Bubble{
static void Main(string[] args)
{
int[] data = new int[10]{7,2,9,1,3,8,6,10,5,4};
cBubble cb = new cBubble();
cb.Sort(data);
for(int i = 0; i < data.Length;i++)
{
Console.WriteLine(data[i]);
}
Console.ReadKey();
}
}
class cBubble
{
public void Sort(int[] value)
{
int temp;
for(int i = 0; i < value.Length - 1; i++)
{
for(int j = i+1;j < value.Length;j++)
{
if(value[i] > value[j])
{
temp = value[i];
value[i] = value[j];
value[j] = temp;
}
}
}
}
}
}