冒泡排序

发表于:2014-7-25 10:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:honker斌    来源:51Testing软件测试网采编

  冒泡排序
  让数组中的元素进行两两比较,第1个与第2个比较,第2个与第3个比较...(第i个与第i+1个比较),经过n(i-1)遍两两比较,,数组中的元素就会按照一定规律由大到小或由小到大排序。
  例:从大到小排序,进行两两比较的时候使用小于号“<”,如果第i个元素小于第i+1个元素,则将第i个元素与第i+1个元素的位置互换。
  10,20,30,40,50,60,70  原始数据7个元素
  20,30,40,50,60,70,10  第1趟 两两比较6次后,1个元素已排好(最小值10排到最后位置)
  30,40,50,60,70,20,10  第2趟 两两比较5次后,2个元素已排好(倒数第二小值20排到倒数第二位置)
  40,50,60,70,30,20,10  第3趟 两两比较4次后,3个元素已排好(倒数第三小值30排到倒数第三位置)
  50,60,70,40,30,20,10  第4趟 两两比较3次后,4个元素已排好(倒数第四小值40排到倒数第四位置)
  60,70,50,40,30,20,10  第5趟 两两比较2次后,5个元素已排好(倒数第五小值50排到倒数第五位置)
  70,60,50,40,30,20,10  第6趟 两两比较1次后,6个元素已排好(倒数第六小值60排到倒数第六位置)
  得出规律:对n个元素进行冒泡排序需要排n-1趟
  第t趟比较的次数为:n-t次
  代码示例如下:
class Program
{
static void Main(string[] args)
{
int[] nums = { 12, 5, 15, 6, 46, 54, 41, 2, 7, 35, 84 };
int n = nums.Length;
for (int t = 0; t < n - 1; t++) //对n个元素进行冒泡排序需要排n-1趟
{
for (int i = 0; i < n - t - 1; i++)  //第t趟比较的次数为:n-t次
{                                    //由于t是由0算起的,所以这里应该是n-(t+1)
if (nums[i] < nums[i + 1])
{
int tmp = nums[i];
nums[i] = nums[i + 1];
nums[i + 1] = tmp;
}
}
}
for (int i = 0; i < n; i++)   //输出结果
{
Console.Write(nums[i] + " ");
}
Console.ReadKey();
}
}
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号