Cool_Breeze 发表于 2021-3-23 09:12

C# 学习笔记 冒泡排序,选择排序,插入排序

本帖最后由 Cool_Breeze 于 2021-3-23 11:02 编辑

堆排序。。。太难了!
using System;
using System.Linq;

class Program
{
    static void Main()
    {
      int[] TestList = {1, 6, 7, 3, 8, 2, 9, 4, 5};
      // Bubble(ref TestList);
      // Select(ref TestList);
      // Insert(ref TestList);
      var Result =
            from value in TestList
            orderby value ascending // ascending 升序 descending 降序
            select value;
            
      foreach (var n in Result) Console.Write("{0, 2}", n);
      // foreach (var n in TestList) Console.Write("{0, 2}", n);
    }
   
    // 冒泡排序
    static void Bubble(ref int[] array)
    {
      int temp = default(int);
      for (int i=0; i<array.Length-1; i++) // 每次把最大的一个数移到末尾
      {
            for (int j=0; j<array.Length-1-i; j++) // 这里还需要减去 i个已经排好序的数(数组右边)
            {
                if (array > array)
                {
                  temp = array;
                  array = array;
                  array = temp;
                }
            }
      }
    }
   
    // 选择排序
    static void Select(ref int[] array)
    {
      int temp = 0;
      int value = 0;
      for (int i=0; i<array.Length; i++)
      {
            temp = i; // 假设第array位为最大值
            for (int j=i+1; j<array.Length; j++)
            {
                if (array > array)
                {
                  temp = j;
                }
            }
            if (temp != i) // 最大值下标发生改变,需要交换位置(说明i下标不是最大值)
            {
                value = array;
                array = array;
                array = value;
            }
      }
    }
   
    // 插入排序
    static void Insert(ref int[] array)
    {
      int temp = 0;
      for (int i=1; i<array.Length; i++) // 从数组第二个数开始,往左边插入
      {
            for (int j=i; j>0; j--) // 变量数组左边的数
            {
                if (array > array ) // 依次比较 j, j-1 位置的数
                {
                  temp = array;
                  array = array;
                  array = temp;
                }
                else break; // 说明左边已经没有比当前数 array 还要大的数。
            }
      }
    }
}

明月相照 发表于 2021-3-23 09:18

天天学习的快乐。

shen12wang 发表于 2021-3-23 09:34

越学习越快乐

香香菜 发表于 2021-3-23 10:41

if (array > array)
                {
                  temp = array;
                  array = array;
                  array = temp;
                }    不应该是(array > array)

alphagis 发表于 2021-3-23 10:48

学习一下,学习使我进步

小刘同学219 发表于 2021-3-23 10:58

每天学习使我进步,加油

Cool_Breeze 发表于 2021-3-23 11:07

香香菜 发表于 2021-3-23 10:41
if (array > array)
                {
                  temp = array;


冒泡排序吗? 比较相邻的2个数,j 和 j +1 是相邻的!

1336947580 发表于 2021-3-25 14:16

学会最难的才会用简单的
页: [1]
查看完整版本: C# 学习笔记 冒泡排序,选择排序,插入排序