• 算法:排列算法


    背景

    记得上大学期间试着实现一个排列算法,可惜当时没有写出来,只是硬编码了几层循环,今天用递归终于写出来了。

    实现

    代码

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace DataStuctureStudy
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             Arrange(new char[] { 'A', 'B', 'C', 'D'});
    14         }
    15 
    16         private static void Arrange(char[] items)
    17         {
    18             Arrange(items, 0);
    19         }
    20 
    21         private static void Arrange(char[] items, int startIndex)
    22         {
    23             if (startIndex == items.Length - 1)
    24             {
    25                 Console.WriteLine(String.Join(",", items));
    26             }
    27 
    28             for (var i = startIndex; i < items.Length; i++)
    29             {
    30                 Arrange(items, startIndex + 1);
    31                 Rolate(items, startIndex);
    32             }
    33         }
    34 
    35         private static void Rolate(char[] items, int startIndex)
    36         {
    37             var temp = items[startIndex];
    38             for (int i = startIndex; i < items.Length - 1; i++)
    39             {
    40                 items[i] = items[i + 1];
    41             }
    42             items[items.Length - 1] = temp;
    43         }
    44     }
    45 }

    输出

  • 相关阅读:
    SQL优化总结之一
    web前端扩展性知识点
    canvas
    开动大脑js小案例(有空就更新的那种)
    本博客在手,jQuery无敌
    小程序整理(持续更新)
    样式初始化代码
    ajax中的async
    跨域问题解决
    ES6学习笔记(持续更新中)
  • 原文地址:https://www.cnblogs.com/happyframework/p/3485468.html
Copyright © 2020-2023  润新知