吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1834|回复: 7
收起左侧

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

  [复制链接]
Cool_Breeze 发表于 2021-3-23 09:12
本帖最后由 Cool_Breeze 于 2021-3-23 11:02 编辑

堆排序。。。太难了!
[C#] 纯文本查看 复制代码
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[j] > array[j+1])
                {
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
    }
    
    // 选择排序
    static void Select(ref int[] array)
    {
        int temp = 0;
        int value = 0;
        for (int i=0; i<array.Length; i++)
        {
            temp = i; // 假设第array[i]位为最大值
            for (int j=i+1; j<array.Length; j++)
            {
                if (array[temp] > array[j])
                {
                    temp = j;
                }
            }
            if (temp != i) // 最大值下标发生改变,需要交换位置(说明i下标不是最大值)
            {
                value = array[i];
                array[i] = array[temp];
                array[temp] = 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[j-1] > array [j]) // 依次比较 j, j-1 位置的数
                {
                    temp = array[j];
                    array[j] = array[j-1];
                    array[j-1] = temp;
                }
                else break; // 说明左边已经没有比当前数 array[j] 还要大的数。
            }
        }
    }
}

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
明月相照 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

明月相照 发表于 2021-3-23 09:18
天天学习的快乐。
shen12wang 发表于 2021-3-23 09:34
香香菜 发表于 2021-3-23 10:41
if (array[j] > array[j+1])
                {
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }    不应该是(array[i] > array[j+1])
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[j] > array[j+1])
                {
                    temp = array[j];

冒泡排序吗? 比较相邻的2个数,j 和 j +1 是相邻的!
1336947580 发表于 2021-3-25 14:16
学会最难的才会用简单的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-17 03:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表