zoukankan      html  css  js  c++  java
  • 常用排序算法总结

         最近两个月多次面试的过程中发现自己对算法的相关知识涉猎甚少,也逐渐的开始了解到算法的重要性。现在逐步对一些常用算法进行整理和归类,与大家分享的同时也能慢慢的减少自己的盲区。

      1.快速排序:

      快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序在编码上来说相对简单,直接调用Array的Sor()方法即可轻易的实现对数组的排序。

     1 /// <summary>
     2         /// 快速排序
     3         /// </summary>
     4         /// <returns></returns>
     5         public int[] Kuaisu()
     6         {
     7             int[] KS = { 2, 1, 8, 3, 9, 2 };
     8 
     9             Array.Sort(KS);
    10 
    11             return KS;
    12         }

      2.冒泡排序:

      冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

     1 /// <summary>
     2         /// 冒泡排序
     3         /// </summary>
     4         /// <returns></returns>
     5         public int[] Maopao()
     6         {
     7             int[] MP =  {2,1,8,3,9,2 };
     8 
     9             int temp;
    10 
    11             for (int i = 0; i < MP.Length-1; i++)
    12             {
    13                 for (int j = i + 1; j <= MP.Length-1; j++)
    14                 {
    15                     if (MP[i] > MP[j])
    16                     {
    17                         temp = MP[i];
    18 
    19                         MP[i] = MP[j];
    20 
    21                         MP[j] = temp;
    22                     }
    23                 }
    24             }
    25             return MP;
    26         }

      3.选择排序:

      选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

     1 /// <summary>
     2         /// 选择排序
     3         /// </summary>
     4         /// <returns></returns>
     5         public int[] Xuanze()
     6         {
     7             int[] XZ = { 2, 1, 8, 3, 9, 2 };
     8 
     9             for (int i = 0; i < XZ.Length; i++)
    10             {
    11                 int min = XZ[i];
    12 
    13                 int temp;
    14 
    15                 int index = i;
    16 
    17                 for (int j = i + 1; j < XZ.Length; j++)
    18                 {
    19                     if (XZ[j] < min)
    20                     {
    21                         min = XZ[j];
    22 
    23                         index = j;
    24                     }
    25                 }
    26 
    27                 temp = XZ[i];
    28 
    29                 XZ[i] = min;
    30 
    31                 XZ[index] = temp;
    32             }
    33 
    34             return XZ;
    35         }

      4.插入排序:

      插入排序的基本操作就是将一个数据与已经排好的序列注意比较,插入到合适的位置,从而得到一个新的有序数据。

     1 /// <summary>
     2         /// 插入排序
     3         /// </summary>
     4         /// <returns></returns>
     5         public int[] Charu()
     6         {
     7             int[] CR = { 2, 1, 8, 3, 9, 2 };
     8 
     9             for (int i = 1; i < CR.Length; i++)
    10             {
    11                 for (int j = i; j > 0 ;j--)
    12                 {
    13                     int temp;
    14 
    15                     int index = j - 1;
    16 
    17                     if (CR[j] < CR[index])
    18                     {
    19                         temp = CR[index];
    20 
    21                         CR[index] = CR[j];
    22 
    23                         CR[j] = temp;
    24                     }
    25                     else
    26                         break;
    27                 }
    28             }
    29             return CR;
    30         }
  • 相关阅读:
    Python动态展示遗传算法求解TSP旅行商问题
    MOEAD算法中均匀权向量的实现---Python
    HDU 5294 多校第一场1007题 最短路+最小割
    POJ 3261 Milk Patterns sa+二分
    HDU 4292 FOOD 2012 ACM/ICPC Asia Regional Chengdu Online
    CodeForces 201A Clear Symmetry
    POJ 1679 The Unique MST 确定MST是否唯一
    POJ 3268 Silver Cow Party 最短路 基础题
    POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
    POJ2229 Sumsets 基礎DP
  • 原文地址:https://www.cnblogs.com/SunshineAgain/p/6065990.html
Copyright © 2011-2022 走看看