08.冒泡排序

冒泡排序,就是将一个数组中的元素按照从大到小或者从小到大排序.
int[] nums={9,8,7,6,5,4,3,2,1,0};   //我们将它升序排序
思考的内容:
第一趟比较:8 7 6 5 4 3 2 1 0 9  //交换了9次     第一趟比较时i=0   交换了9次j=9    j=9  可写成j=nums.Length-1-0
第二趟比较:7 6 5 4 3 2 1 0 8 9  //交换了8次      第一趟比较时i=1   交换了9次j=8    j=8  可写成j=nums.Length-1-1
第三趟比较:6 5 4 3 2 1 0 7 8 9  //交换了7次      第一趟比较时i=2   交换了9次j=7    j=7  可写成j=nums.Length-1-2
第四趟比较:5 4 3 2 1 0 6 7 8 9  //交换了6次      第一趟比较时i=3   交换了9次j=6
第五趟比较:4 3 2 1 0 5 6 7 8 9  //交换了5次      第一趟比较时i=4   交换了9次j=5
第六趟比较:3 2 1 0 4 5 6 7 8 9  //交换了4次
第七趟比较:2 1 0 3 4 5 6 7 8 9  //交换了3次
第八趟比较:1 0 2 3 4 5 6 7 8 9  //交换了2次
第九趟比较:0 1 2 3 4 5 6 7 8 9  //交换了1次
外层循环                                      里层循环

由此可见这个是一个循环的嵌套

//总共是10个数,但是比较了9次就完成了排序,故循环九次即可
for(int i=0;i<nums.Length-1;i++)    
{
   for(int j=0;j<nums.Length-1-i;j++)
   {
    if(nums[j]>nums[j+1])
     {
      int temp=nums[j];
      nums[j]=nums[j+1];
      nums[j+1]=temp;
     }
   }
}

冒泡排序的练习:
 
   
  1. namespace _17.冒泡排序
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. int[] nums = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; //我们将它升序排序
  8. /*
  9. 思考的内容:
  10. 第一趟比较:8 7 6 5 4 3 2 1 0 9 //交换了9次 第一趟比较时i=0 交换了9次j=9 j=9 可写成j=nums.Length-1-0
  11. 第二趟比较:7 6 5 4 3 2 1 0 8 9 //交换了8次 第一趟比较时i=1 交换了9次j=8 j=8 可写成j=nums.Length-1-1
  12. 第三趟比较:6 5 4 3 2 1 0 7 8 9 //交换了7次 第一趟比较时i=2 交换了9次j=7 j=7 可写成j=nums.Length-1-2
  13. 第四趟比较:5 4 3 2 1 0 6 7 8 9 //交换了6次 第一趟比较时i=3 交换了9次j=6
  14. 第五趟比较:4 3 2 1 0 5 6 7 8 9 //交换了5次 第一趟比较时i=4 交换了9次j=5
  15. 第六趟比较:3 2 1 0 4 5 6 7 8 9 //交换了4次
  16. 第七趟比较:2 1 0 3 4 5 6 7 8 9 //交换了3次
  17. 第八趟比较:1 0 2 3 4 5 6 7 8 9 //交换了2次
  18. 第九趟比较:0 1 2 3 4 5 6 7 8 9 //交换了1次
  19. */
  20. for (int i = 0; i < nums.Length - 1; i++)
  21. {
  22. for (int j = 0; j < nums.Length - 1 - i; j++)
  23. {
  24. if (nums[j] > nums[j + 1]) // > 进行升序判断
  25. {
  26. int temp = nums[j];
  27. nums[j] = nums[j + 1];
  28. nums[j + 1] = temp;
  29. }
  30. }
  31. }
  32. foreach (var element in nums)
  33. {
  34. Console.WriteLine(element);
  35. }
  36. Console.ReadKey();
  37. }
  38. }
  39. }
1047912-20161102131258799-215701890.png
 可能会出现的面试题:
(1).不使用第三方变量,交换两个变量的值
(2).冒泡排序
(3).求一个字符串中每一个字母出现的次数.

实际上C#内置了数组排序的方法,我们可以调用Sort(),对代码进行排序.
但是,面试的时候,我们必须手写冒泡排序的原理.

数组的两个方法:
Array数组类  Array类是一个静态类
Sort();方法只能针对数组进行升序排序
Reverse();  方法,会对数组的内容的进行反转.








转载于:https://www.cnblogs.com/HelloZyjS/p/6022586.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值