冒泡排序/选择排序/插入排序(c#)

---恢复内容开始---

每次看这些排序都像没见过一样,完全理解不了,可是不久前明明了解的十分透彻。记下来记下来记下来!

1>>>冒泡排序:相邻的两两相比 把大的(或者小的)放后边,这样一轮下来,最下边的肯定是最大的数(或者最小的数)。重复arr.length次就能把arr按有序排列了。

class Program
    {
        static void Main(string[] args)
        {

            int[] arr = new int[] { 22, 11, 2, 9, 6 };
            MP(arr);//调用方法
            foreach (var v in arr) {   //调用方法重新排序后 的数组循环输出
                Console.WriteLine(v);
            }
            Console.ReadLine();
        }
        //冒泡排序的方法
        public static void MP(int[] a)
        {
            int temp;
            for (var i = 0; i < a.Length-1; i++)//外层循环,比较四轮。每轮筛出一个放在最后。            {
                for (var j = 0; j < a.Length - 1 - i; j++)//内层循环,两两比较,因为外层循环 每轮会确定出一个放在最后。
                                                          //所以每轮就多一个不用比较的数,所以a.Length-1-i。
                {
                    if (a[j] > a[j + 1])          //因为这里需要与自己的下一位作比较,所以上边的a.Lengths索引必须-1.要不然会超出数组长度
                    {
                        temp = a[j];              //这三句话: 条件成立时,俩数调位置。
                        a[j] = a[j + 1];
                        a[j + 1] = temp;
                    }
                }
            }
        }
    }

2>>>选择排序:从第一个数开始 依次将每个数 与他后边的数比较 并记录比较出的最小(最大)的数,然后交换位置。每轮下来就有一个最小(或最大)的数在【当前轮中的】第一位。这样比较结束时就是一个有序的数列。

class Program{
   static void Main(string[] args)
        {

            int[] arr = new int[] { 22, 11, 2, 9, 6 };
            XZ(arr);
            foreach (var v in arr)//调用方法重新排序后 的数组循环输出
            {
                Console.WriteLine(v);
            }
            Console.ReadLine();
        }

//选择排序的方法
   public static void XZ(int [] a)        {
            int temp;
            int min;
            for (int i = 0; i < a.Length -1; i++)      //循环使用每个数 与后边的数比较(最后一个后边没有,所以a.Length-1)
            {
                min = i;                              //min用来 动态存放 最小的数的索引,直到她真的存放了一个最小数
                for (int j = i + 1; j < a.Length; j++)  //从第一个数的下一个 循环与第一个比较
                {
                    if (a[j] < a[min])                  //当有小于第一个数的元素时,
                    {
                        min = j;                        //记录下这个数的索引,放在min中。继续内部循环
                    }                    //内部循环作用是记录最小数的索引(这很重要)
                }
                temp = a[min];                          //把最小的那个数存起来
                a[min] = a[i];                          //把【当前轮】第一位的数放在 最小数的位置
                a[i] = temp;                            //把最小数放在【当前轮】第一位
            }
        }}

原文地址:https://www.cnblogs.com/zx3180/p/9342917.html

时间: 2024-12-13 11:41:56

冒泡排序/选择排序/插入排序(c#)的相关文章

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)

冒泡排序 public static void bubbleSort(int[] arr){ int lgn = arr.length; for (int i = 0; i < lgn - 1; i++) { for (int j = 0; j < lgn - 1 - i; j++) { if(arr[j] > arr[j + 1]){ int temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } } 选择排序 publ

算法_基本排序算法之冒泡排序,选择排序,插入排序和希尔排序

排序的元素实现了Comparable接口,以达到对于通用性. 最基础的排序是冒泡排序,下面是其思路: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较. 下面是其实现代码: public class Maopao { public void sort(Comparable[]

过三关 Java冒泡排序选择排序插入排序小练习

材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选择用插入排序法,来进行排序. 测试类: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //功能:猴子排序 public class MonkeySelect {

C++中的冒泡排序,选择排序,插入排序

最简单的插入排序:思想,两两之间比较,时间复杂度o(n^2) void bubblesort(vector<int>&vec, int n) { if (&vec==NULL) return; int temp; bool flag; for (int i = 0; i < n - 1; i++)//外层循环控制循环次数 { flag = false;//判断是否有序的标志 for (int j = 0; j < n - 1 - i; j++)//内层循环控制边界

冒泡排序 选择排序 插入排序 java

双向冒泡 1 package com.huang; 2 3 public class _014_bubb_sort { 4 5 int[] b={1,2}; 6 static int a[]={12,4,35,65,43,63,2,6,9,544,43543}; 7 public static void main(String[] args) { 8 display(); 9 10 //冒泡 11 for(int i=0;i<a.length/2;i++) 12 { 13 for(int j=0

简单排序算法 冒泡排序 选择排序 插入排序

冒泡排序: 总体思路:对未排序的各个元素,依次比较两个元素,如果这两个元素为逆序(与想要的顺序相反),则交换这两个元素. 这样可以有两种排序的思路: 思路一: 固定位置排序:比如有一个未排序队列,下标依次为0,1,2,.....N-1, 第一轮排序:首先固定位置0,将下标为0的元素依次和下标为1.下标为2.....下标为N-1的元素相比较,若相比较的两个元素为逆序,则交换这两个元素,这样第一轮排序完之后,位置为0的元素,就是最大的(最小的). 第二轮排序:首先固定位置1,将下标为1的元素依次和下

C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序,然后是測试的样例.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <

C# 插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序

下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子.代码位置:http://download.csdn.net/detail/luozuolincool/8040027 排序类: public class Sortings { //插入排序 public void insertSort(int[] array) { int temp = 0; int index = 0; for (int i = 0; i <