zoukankan      html  css  js  c++  java
  • 10个排序算法,待更新

    1.冒泡和快速排序

        /// <summary>
        /// bubble sort
        /// </summary>
        /// <param name="arr">the array to sort</param>
        /// <returns></returns>
        public int[] BubbleSort(int[] arr) {
          Console.WriteLine($"Origin: { String.Join(",", arr)}");
          int step = 0;
          for (int i = 0; i < arr.Length; i++) {
            for (int j = 0; j < arr.Length-i-1; j++) {
              var leftItem = arr[j];
              var rightItem = arr[j+1];
              if (leftItem > rightItem) {
                arr[j] = rightItem;
                arr[j + 1] = leftItem;
                string currentArrString = GetArrItemString(arr);
                Console.WriteLine($"Step{++step}  {leftItem} <=>{rightItem} : {currentArrString}");
              }
            }
          }
          return arr;
        }
    
    
        /// <summary>
        /// Get the array string
        /// </summary>
        /// <param name="arr">the array to be converted to string</param>
        /// <returns></returns>
        private string GetArrItemString(int[] arr) {
          StringBuilder resultStr = new StringBuilder();
          if (arr.Length == 0) {
            return String.Empty;
          }
          for (int i = 0; i < arr.Length; i++) {
            resultStr.Append(arr[i].ToString());
            resultStr.Append(",");
          }
          return resultStr.ToString();
        }
    
        /// <summary>
        /// Swap two positions' value 
        /// </summary>
        /// <param name="arr">The array</param>
        /// <param name="left">left array index</param>
        /// <param name="right">right array index</param>
        private void Swap(int[] arr, int left, int right) {
          var templateValue = arr[left];
          arr[left] = arr[right];
          arr[right] = templateValue;
          string currentArrString = GetArrItemString(arr);
          Console.WriteLine($"Step {arr[left]} <=>{arr[right]} : {currentArrString}  index: {left} <=> {right}   ");
        }
    
        /// <summary>
        /// Quick scan
        /// </summary>
        /// <param name="arr">The array to sort</param>
        public void QuickSort(int[] arr, int left, int right) {
          if (left > right) {
            return;
          }
          var temp = arr[left];
          int i = left, j = right;
          while (i < j) {
            while ( i < j && arr[j] >= temp) {
              j--;
            };
            while (i < j && arr[i] <= temp)
            {
              i++;
            }
            if ( i < j) {
              Swap(arr, i, j);
            }
          }
          //arr[left] = arr[i];
          //arr[i] = temp;
          Swap(arr, left, i);
          string currentArrString = GetArrItemString(arr);
          Console.WriteLine($"Current Array : {currentArrString}, i = {i}");
          QuickSort(arr, left, i-1);
          QuickSort(arr, i+1, right);
        }

    2.待更新

  • 相关阅读:
    Spring Cloud 网关服务 zuul 二
    spring cloud 2.x版本 Gateway动态路由教程
    spring cloud 2.x版本 Sleuth+Zipkin分布式链路追踪
    spring cloud 2.x版本 Gateway熔断、限流教程
    spring cloud 2.x版本 Gateway动态路由教程
    spring cloud 2.x版本 Gateway路由网关教程
    spring cloud 2.x版本 Hystrix Dashboard断路器教程
    spring cloud 2.x版本 Config配置中心教程
    [每天进步一点点]mysql笔记整理(三):索引
    [每天进步一点点]mysql笔记整理(二):事务与锁
  • 原文地址:https://www.cnblogs.com/kingsmart/p/14765709.html
Copyright © 2011-2022 走看看