zoukankan      html  css  js  c++  java
  • c#排序

    插入排序:

     1  class Class1
     2     {
     3         /*先将第一个记录视为一个有序序列,然后依次将后面的记录插入到这个有序序列中来。
     4          * 每次要插入的记录时,须从后往前依次比较有序序列中的记录,直到找到在有序序列中的位置,
     5          * 记录下该位置,该位置开始的每个记录都后移一位,然后将插入记录插入该位置。这样每插入一个记录进去,
     6          * 有序序列长度加1,剩余记录减1,直到所有记录都插入到有序序列中,排序完成。*/
     7         public void InsertionSort()///插入排序法
     8         {
     9             int[] arr = new int[]{30,45,54,13,49,45};
    10             int inner, temp;
    11             for (int outer = 1; outer <= arr.Length-1; outer++)//每当一次内层循环,有序序列加1
    12             {
    13                 temp = arr[outer];//temp代表要插入的数
    14                 inner = outer;
    15                 while (inner > 0 && arr[inner - 1] >= temp)//inner-1代表有序序列的最大值索引,每次循环减1
    16                 {
    17                     arr[inner] = arr[inner - 1];//有序记录后移
    18                     inner--;
    19                 }
    20                 arr[inner] = temp;
    21             }
    22             foreach(int i in arr)
    23             {
    24                 Console.WriteLine(i);
    25             }
    26             Console.ReadKey();
    27         }
    28     }

    基本冒泡排序法:

     1  public void BubbleSort()///基本冒泡排序法
     2         {
     3             int temp;
     4             for (int outer = upper; outer > 0; outer--)//因为最后只有一个数的时候,就是最小的,不用再排,所以outer>0
     5             {
     6                 for (int inner = 0; inner < outer; inner++)//内层遍历每次遍历中都把最大的数排到了最后
     7                 {
     8                     if (arr[inner] > arr[inner + 1])   //从第一个数开始遍历,前面一个比后面一个大进行交换;temp是一个局部变量,用来存放交换过程中的值
     9                     {
    10                         temp = arr[inner];
    11                         arr[inner] = arr[inner + 1];
    12                         arr[inner + 1] = temp;
    13                     }
    14                 }
    15             }
    16        }

    改进冒泡排序:

    /*改进冒泡比基本冒泡多了一个i=0的判断,应该是多了一种特殊情况的判断若记录序列的初始状态为"正序",
             * 则冒泡排序过程只需进行一趟排序,在排序过程中只需进行n-1次比较,没有进入if判断和交换
             * 且不移动记录;反之,若记录序列的初始状态为"逆序",则需进行n(n-1)/2次比较和记录移动*/
           public void BubbleSort()///改进冒泡排序法
            {
                int temp, i;
                for (int outer = upper; outer > 0; outer--)
                {
                    i = 0;
                    for (int inner = 0; inner < outer; inner++)
                    {
                        if (arr[inner] > arr[inner + 1])
                        {
                            temp = arr[inner];
                            arr[inner] = arr[inner + 1];
                            arr[inner + 1] = temp;
                            i++;
                        }
                    }
                    if (i == 0)
                        break;
                }
            }

    选择排序法:

     1  public void SelectionSort()///选择排序法
     2         {
     3             int min, temp;
     4             for (int outer = 0; outer <= upper; outer++)
     5             {
     6                 min = outer;                       //min代表数组未排序部分最前面的索引
     7                 for (int inner = outer + 1; inner <= upper; inner++)//再一次遍历中会找到数组最小数的索引
     8                 {
     9                     if (arr[inner] < arr[min])     //如果数组的后一个数小于被比较的数
    10                         min = inner;               //就将后一个数的索引赋值给min
    11                 }
    12                 temp = arr[outer];            //outer代表了在一次遍历中被比较数的索引,min代表了在一次遍历中最小数的索引,
    13                 arr[outer] = arr[min];       //把这两个数交换
    14                 arr[min] = temp;
    15             }
    16         }
    落霞与孤鹜齐飞,秋水共长天一色。
  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/sening/p/3695625.html
Copyright © 2011-2022 走看看