• C#四种简单排序


     1         int[] nums = { 9, 5, 3, 1, 6, 4, 7, 2, 0, 8 };
     2 
     3             #region 冒泡排序
     4             //for (int i = 0; i < nums.Length - 1; i++)
     5             //{
     6             //    for (int j = 0; j < nums.Length - 1 - i; j++)
     7             //    {
     8             //        if (nums[j] > nums[j + 1])
     9             //        {
    10             //            int temp = nums[j];
    11             //            nums[j] = nums[j + 1];
    12             //            nums[j + 1] = temp;
    13             //        }
    14             //    }
    15             //}
    16 
    17             //for (int i = 0; i < nums.Length - 1; i++)
    18             //{
    19             //    for (int j = 0; j < nums.Length - 1 - i; j++)
    20             //    {
    21             //        if (nums[j] < nums[j + 1])
    22             //        {
    23             //            var tmp = nums[j];
    24             //            nums[j] = nums[j + 1];
    25             //            nums[j + 1] = tmp;
    26             //        }
    27             //    }
    28             //}
    29             #endregion
    30             #region 插入排序
    31             //for (int i = 1; i < nums.Length; i++)
    32             //{
    33             //    int insertVal = nums[i];  //首先记住这个预备要插入的数
    34             //    int insertIndex = i - 1; //找出它前一个数的下标(等下 准备插入的数 要跟这个数做比较)
    35 
    36             //    //如果这个条件满足,说明,我们还没有找到适当的位置
    37             //    while (insertIndex >= 0 && insertVal < nums[insertIndex])   //这里小于是升序,大于是降序
    38             //    {
    39             //        nums[insertIndex + 1] = nums[insertIndex];   //同时把比插入数要大的数往后移
    40             //        insertIndex--;      //指针继续往后移,等下插入的数也要跟这个指针指向的数做比较         
    41             //    }
    42             //    //插入(这时候给insertVal找到适当位置)
    43             //    nums[insertIndex + 1] = insertVal;
    44             //}
    45             #endregion
    46             #region 选择排序
    47             //for (int i = 0; i < nums.Length - 1; i++)
    48             //{
    49             //    int min_index = i;  //list中最小值的索引
    50             //    for (int j = i + 1; j < nums.Length; j++)
    51             //    {
    52             //        if (nums[j] < nums[min_index])
    53             //        {
    54             //            min_index = j;
    55             //        }
    56             //    }
    57             //    int temp = nums[i];
    58             //    nums[i] = nums[min_index];
    59             //    nums[min_index] = temp;
    60             //}
    61             #endregion
    62             #region 希尔排序
    63             //希尔排序利用了插入排序的一个特点来优化排序算法,插入排序的这个特点就是:当数组基本有序的时候,插入排序的效率比较高。
    64             int gap = nums.Length / 2;
    65 
    66             while (1 <= gap)
    67             {
    68                 // 把距离为 gap 的元素编为一个组,扫描所有组
    69                 for (int i = gap; i < nums.Length; i++)
    70                 {
    71                     int j = 0;
    72                     int temp = nums[i];
    73 
    74                     // 对距离为 gap 的元素组进行排序
    75                     for (j = i - gap; j >= 0 && temp < nums[j]; j = j - gap)
    76                     {
    77                         nums[j + gap] = nums[j];
    78                     }
    79                     nums[j + gap] = temp;
    80                 }
    81                 gap = gap / 2; // 减小增量
    82             }
    83             #endregion
    84 
    85             //打印数组
    86             for (int i = 0; i < nums.Length; i++)
    87             {
    88                 Console.WriteLine(nums[i]);
    89             }    
  • 相关阅读:
    pandas
    使用Selenium模拟浏览器抓取淘宝商品美食信息
    Pycharm安装第三方库
    shift 函数
    mysql 基础(一)
    mysql基础(三)
    Python Programming for Finance
    进程线程
    股票上市代码及上市时间
    SQLyog连接数据库报错plugin caching_sha2_password could not be loaded
  • 原文地址:https://www.cnblogs.com/liangwenchao-912/p/14455482.html
Copyright © 2020-2023  润新知