冒泡算法的原理:

  • 比较相邻的两个数字,如果第一个数字比第二个数字大,则交换它们位置
  • 从开始第一对比较到结尾最后一对,最后一个数字就是最大数
  • 除了最后一个数字,再次从开始第一对比较到最后一对,得出第二大的数字
  • 重复上面操作,直到没有任何一对数字需要比较

举例说明:要排序数组:int[] arr={6,3,8,2,9,1};

第一趟排序:

    第一次排序:6和3比较,6大于3,交换位置: 3 6 8 2 9 1

    第二次排序:6和8比较,6小于8,不交换位置:3 6 8 2 9 1

    第三次排序:8和2比较,8大于2,交换位置: 3 6 2 8 9 1

    第四次排序:8和9比较,8小于9,不交换位置:3 6 2 8 9 1

    第五次排序:9和1比较:9大于1,交换位置: 3 6 2 8 1 9

    第一趟总共进行了5次比较, 排序结果: 3 6 2 8 1 9


第二趟排序:

    第一次排序:3和6比较,3小于6,不交换位置:3 6 2 8 1 9

    第二次排序:6和2比较,6大于2,交换位置: 3 2 6 8 1 9

    第三次排序:6和8比较,6大于8,不交换位置:3 2 6 8 1 9

    第四次排序:8和1比较,8大于1,交换位置: 3 2 6 1 8 9

    第二趟总共进行了4次比较, 排序结果: 3 2 6 1 8 9


第三趟排序:

    第一次排序:3和2比较,3大于2,交换位置: 2 3 6 1 8 9

    第二次排序:3和6比较,3小于6,不交换位置:2 3 6 1 8 9

    第三次排序:6和1比较,6大于1,交换位置: 2 3 1 6 8 9

    第二趟总共进行了3次比较, 排序结果: 2 3 1 6 8 9


第四趟排序:

    第一次排序:2和3比较,2小于3,不交换位置:2 3 1 6 8 9

    第二次排序:3和1比较,3大于1,交换位置: 2 1 3 6 8 9

    第二趟总共进行了2次比较, 排序结果: 2 1 3 6 8 9


第五趟排序:

    第一次排序:2和1比较,2大于1,交换位置: 1 2 3 6 8 9

    第二趟总共进行了1次比较, 排序结果: 1 2 3 6 8 9


最终结果:1 2 3 6 8 9


从上面可以得出:N个数字进行排序,需要经过N-1趟排序,每i趟排序N-i次

使用双重循坏,外层控制循坏多少趟,内层控制每趟循坏的次数

for (int i = 0; i < list.Length-1; i++)
{
for (int j = 0; j < list.Length-1-i; j++)
{
//交换位置
}
}

代码实现:

using System;

namespace 冒泡排序
{
class Program
{
static void Main(string[] args)
{
int[] arr = new[] { 2, 4, 1, 68, 43, 21 };
int temp = 0;
for (int i = 0; i < arr.Length - 1; i++) //外层循环控制排序趟数
{
for (int j = 0; j < arr.Length - 1 - i; j++) //内层循环控制每一趟排序多少次
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
} foreach (var ar in arr)
{
Console.Write(ar + " ");
}
Console.ReadLine(); }
}
}

实现的冒泡排序:

最新文章

  1. SGIP、SMGP 长短信发送问题小结
  2. 不就ideas嘛,谁没有!
  3. Android http超时选项的测试
  4. AutoLayout那些坑
  5. Careerup上的简历模板
  6. 实现百度外卖APP个人中心头像&quot;浪&quot;起来的动画效果
  7. TOMCAT内存大小调整
  8. Hibernate逍遥游记-第15章处理并发问题-001事务并发问题及隔离机制介绍
  9. SVM核函数与软间隔
  10. 还原virtual函数的本质-----C++
  11. php中使用curl两个例子
  12. [leetcode-560-Subarray Sum Equals K]
  13. 【数据结构】赫夫曼树的实现和模拟压缩(C++)
  14. MidoNet 安装(Kilo RDO)(最老版)
  15. B2C B2B C2C O2O模式的介绍
  16. Speeding Up The Traveling Salesman Using Dynamic Programming
  17. K/V式枚举
  18. Python lstrip() 方法
  19. Git 中文件的状态和流转区
  20. 【Oracle】Oracle透明网关访问MSSQLServer

热门文章

  1. spring AOP为什么配置了没有效果?
  2. sublime_text3 快速生成xhtml表头手动设置
  3. 解析json结构绘制canvas
  4. java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
  5. 匿名内部类中关于new Runnable()的使用
  6. js获取日期:昨天今天和明天、后天 [转贴记录]
  7. synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较
  8. 个人总结4-dbutils总结
  9. 如何写一个能在gulp build pipe中任意更改src内容的函数
  10. In-app Billing 概述