C#冒泡排序,选择排序

news/2025/2/8 19:02:50 标签: 算法, 数据结构, 排序算法

冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。这个过程一直进行,直到没有需要交换的元素为止,这时数列就排序完成了。这种算法的名字来源于较小的元素会通过交换慢慢“浮”到数列的顶端,就像水中的气泡一样。

 //冒泡排序
 int[] ints = { 1, 8, 6, 12, 7, 16, 21 };
 for (int i = 0; i < ints.Length; i++)
 {
     for (int j = 0;j<ints.Length-1;j++)
     {
         if(ints[j] > ints[j+1])
         {
             int temp=ints[j];
             ints[j]=ints[j+1];
             ints[j+1]=temp;
         }
     }
 }

 //简洁方法
 //由于每一次进行比较都能得出一个最大的排在后面,那么每次排除最大的就不用在进行比较
 for (int i = 0;i < ints.Length-1;i++)
 {
     for(int j = 0; j<ints.Length-1-i;j++)
     {
         if (ints[j]>ints[j+1])
         {
             //语法糖
             (ints[j],ints[j+1])=(ints[j + 1], ints[j]);
         }
     }
 }

选择排序

选择排序是一种简单直观的排序算法,它的基本思想是在每一次遍历中找到最小(或最大)的元素,将其放置到序列的起始位置。这个过程会不断重复,直到所有的元素都被排序。尽管选择排序的时间复杂度为O(n^2),它的优点在于不占用额外的内存空间。

 //选择排序
 int[] intss = { 1,3,6,9,12,4,7};
 for (int i = 0;i<intss.Length-1;i++)
 {
     int Minsum = i;
     for (int j =i+1;j<intss.Length;j++)
     {
         if (intss[j] < intss[Minsum])
         {
             Minsum = j;
         }
     }
     (intss[Minsum], intss[i]) = (intss[i],intss[Minsum]);
 }
 foreach (var i in intss)
 {
     Console.WriteLine(i);
 }

补充

        //Array 数组排序
        //升序 从小到大
        Array.Sort(intss);
        for (int i = 0; i < intss.Length; i++)
        {
            Console.Write(intss[i]);
        }
        Console.WriteLine();
        //降序 从大到小
        Array.Reverse(ints);
        for (int i = 0;i < ints.Length; i++)
        {
            Console.Write(ints[i]+"\t");
        }

        //高阶函数排序
        Array.Sort(ints, (x, y) => x - y); //升序
        Array.Sort(intss, (x, y) => y - x);//降序

        ArrayList arrayList = new ArrayList() { 10,21,36,4,5,61,52};
        arrayList.Sort(new MyArray());
    }
}
//自定义比较器
//Comparer 接口
//MyArray 类
class MyArray:IComparer
{
    public int Compare(object x, object y)
    {
        return CaseInsensitiveComparer.Default.Compare(y,x);
    }
}


http://www.niftyadmin.cn/n/5845218.html

相关文章

kafka消费端之消费者协调器和组协调器

文章目录 概述回顾历史老版本获取消费者变更老版本存在的问题 消费者协调器和组协调器新版如何解决老版本问题再均衡过程**第一阶段CFIND COORDINATOR****第二阶段&#xff08;JOINGROUP&#xff09;**选举消费组的lcader选举分区分配策略 第三阶段&#xff08;SYNC GROUP&…

Rust 核心语法总结

一、Rust 核心语法总结 1. 基础语法 变量绑定 let x = 5; // 不可变绑定 let mut y = 10; // 可变绑定数据类型 标量类型:i32, u32, f64, bool, char复合类型:元组 (i32, f64)、数组 [i32; 5]字符串:String(堆分配)、&str(切片)所有权系统 所有权规则…

Day54:eval()函数

在 Python 中,eval() 函数是一个内置函数,用于执行一个字符串表达式,并返回该表达式的计算结果。这个函数将字符串当作 Python 表达式来执行,它可以接受一个字符串作为输入,然后求值并返回结果。 今天我们将学习如何使用 eval() 函数,包括它的基本用法、常见应用以及潜在…

重塑生产制造企业项目管理新范式:项目模板在Tita中的卓越实践

在竞争激烈的生产制造领域&#xff0c;每一个项目的成功执行都是企业稳健前行的重要基石。然而&#xff0c;面对复杂多变的生产流程、严格的交货期限以及不断变化的客户需求&#xff0c;如何确保项目高效、有序地进行&#xff0c;成为了众多企业面临的共同挑战。此时&#xff0…

Java面试题-Java基础

文章目录 1.源码1.ArrayList1.ArrayList的扩容机制2.ArrayList和LinkedList的区别是什么&#xff1f;3.如何实现数组和List之间的转换&#xff1f; 2.HashMap1.HashMap的put方法流程2.HashMap的扩容机制3.HashMap在1.7的情况下多线程死循环的情况4.**jdk7的ConcurrentHashMap实…

学习日记-250207

一.论文 1.Prompt Learning for News Recommendation 任务不一致&#xff08;LLM与实际任务&#xff09;产生prompt提示。 Prompt Learning for News Recommendation 论文阅读 SIGIR2023-CSDN博客 2.GPT4Rec: A Generative Framework for Personalized Recommendation and…

使用 `WITH` 子句优化复杂 SQL 查询

使用 WITH 子句优化复杂 SQL 查询 在 SQL 中&#xff0c;处理复杂的查询需求时&#xff0c;代码往往会变得冗长且难以维护。为了解决这个问题&#xff0c;SQL 提供了 WITH 子句&#xff08;也称为公用表表达式&#xff0c;Common Table Expression&#xff0c;CTE&#xff09;…

python编程-集合内置函数和filter(),集合常见操作

在Python中&#xff0c;列表、集合、字典是三种常用的数据结构&#xff0c;它们各自拥有一些内置函数&#xff0c;用于执行各种操作。 一、列表的常用内置函数 #‌1、append(obj)‌: 在列表末尾添加新的对象。list_a [1, 2, 3] list_a.append(4) print(list_a) # 输出: [1,…