您的位置:首页 > 编程语言 > C#

【C#】2.算法温故而知新 - 冒泡排序

2014-09-22 18:25 204 查看
冒泡排序可以很好的解决前面提到的简单桶排序的2个问题,冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。

该算法的核心部分是双重嵌套循环,其时间复杂度是O(N²)。

缺点:在算法的执行效率上牺牲很多。假如我们的计算机每秒可以运行10亿次,那么对1亿个数进行排序,桶排序只需要0.1秒,而冒泡排序则需要1千万秒,达115天之久。



代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
public class Program
{
public static void Main(string[] args)
{
int[] nums = new int[10] { 20, 14, 9, 22, 18, 0, 1, 8, 29, 28 };//初始化一个数组,其中有10个数,这里假定是我们输入的数,需要从小到大排序
int temp;
//冒泡排序核心部分
for (int i = 1; i <= nums.Length - 1; i++)//n个数排序。只用进行n-1趟交换
{
for (int j = 1; j <= nums.Length - i; j++)//从第一位开始比较知道最后一个尚未归位的数,想一下为什么到n-1就可以了
{
if (nums[j - 1] > nums[j])//比较大小并交换
{
temp = nums[j - 1];
nums[j - 1] = nums[j];
nums[j] = temp;
}
}
}

for (int i = 0; i < nums.Length; i++)
Console.Write("  " + nums[i]);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: