冒泡算法:它重复地走访过要排序的元素列,依次比较两个相邻的元素Image.gif

    image.png

    通用代码:

    1. void BubbleSort(int arr[], int n)
    2. {
    3. //从小到大排序 相邻来两个数比较,将大的数字往后放
    4. for (int i = 0; i < n - 1; i++) //n-1是因为数组下标最大为n-1 要进行10(//9)轮比较
    5. {
    6. //n-1是因为数组下标最大为n-1 要进行10(//9)次比较,再减i是因为每最后的i个元素已经有序不需要继续排序
    7. for (int j = 0; j < n - 1 - i; j++)
    8. {
    9. if (arr[j] > arr[j + 1]) //两两比较,将小的数据放前面
    10. {
    11. swap(arr, j + 1, j); //交换arr数组arr[j+1]和arr[j]的值
    12. }
    13. }
    14. }
    15. }
    16. //交换函数后面就不列举了,凡是swap都是下面代码实现的
    17. void swap(int arr[], int x, int y)
    18. {
    19. int temp = arr[x];
    20. arr[x] = arr[y];
    21. arr[y] = temp;
    22. }
    1. using System;
    2. namespace _029_冒泡排序
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. int[] nums = new int[10];
    9. Console.WriteLine("请输入10个数字:");
    10. for (int i = 0; i < nums.Length; i++)
    11. {
    12. nums[i] = Convert.ToInt32(Console.ReadLine());
    13. }
    14. Console.WriteLine("你输入的10个数字为:");
    15. for (int i = 0; i < nums.Length; i++)
    16. {
    17. Console.Write(nums[i]+" ");
    18. }
    19. Console.WriteLine();
    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 + 1];
    27. nums[j + 1] = nums[j];
    28. nums[j] = temp;
    29. }
    30. }
    31. }
    32. //一行代码解决排序
    33. //Array.Sort(nums); //只能针对数组做一个升序排列
    34. //Array.Reverse(nums); //反转数组元素
    35. //如若进行降序 两个代码配合即可
    36. //Array.Sort(nums); Array.Reverse(nums);
    37. Console.WriteLine("从小到大排序为:");
    38. for (int i = 0; i < nums.Length; i++)
    39. {
    40. Console.Write(nums[i]+" ");
    41. }
    42. Console.ReadKey();
    43. }
    44. }
    45. }