zoukankan      html  css  js  c++  java
  • [复习]快速排序

    原始数组L1,从中任意选择一个基准数F(一般选择第1个),小于F的数据放在F的左边记为数组minList,大于F的数据放在F的右边记为数组maxList。那么

    L1=minList+F+maxList

    然后对minList和maxList再做这样的操作,直到minList和maxList中的元素个数为1或者0的时候停止

     1         static void Main(string[] args)
     2         {
     3             Console.WriteLine("Hello World!");
     4             var lists = new List<int>() { 1, 2, 3, 4, 5, 5, 6, 1, 2, 3, 4, 5, 6, 3, 8, 9, 12, 0 };
     5 
     6             QuickSort(ref lists, 0, lists.Count);
     7             foreach (var item in lists)
     8             {
     9                 Console.Write(item + " ");
    10             }
    11             Console.ReadKey();
    12         }
    13 
    14         static void QuickSort(ref List<int> nums, int left, int right)
    15         {
    16             if (left >= right)
    17             {
    18                 return;
    19             }
    20 
    21             int i = left;
    22             int j = right - 1;
    23             int middle = nums[(left + right) / 2];
    24             while (true)
    25             {
    26                 while (i < right && nums[i] < middle) { i++; };
    27                 while (j > 0 && nums[j] > middle) { j--; };
    28                 if (i == j) break;
    29                 //两个值互换位置
    30                 // 第一种可减少内存占用
    31                 //时间换内存?
    32                 /*
    33                 nums[i] = nums[i] + nums[j];
    34                 nums[j] = nums[i] - nums[j];
    35                 nums[i] = nums[i] - nums[j];
    36                 */
    37                 //第二种追求速度
    38                 //内存换时间?
    39                 var temp = nums[i];
    40                 nums[i] = nums[j];
    41                 nums[j] = temp;
    42                 if (nums[i] != nums[j])
    43                 {
    44                     continue;
    45                 }
    46                 j--;
    47             }
    48             QuickSort(ref nums, left, i);
    49             QuickSort(ref nums, i + 1, right);
    50         }
  • 相关阅读:
    Flexbox兼容性
    响应式布局(Responsive Layout)/流式布局(Fluid Layout)/自适应布局(Adaptive)
    Flex布局之box-flex
    Flex布局(伸缩盒布局)
    input美化问题
    用纯css改变下拉列表select框的默认样式
    超越icon font
    CSS居中之美
    php中yaf框架的服务器配置
    MySQL优化
  • 原文地址:https://www.cnblogs.com/yueyue184/p/10863409.html
Copyright © 2011-2022 走看看