一、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m

//方法一,通过顺序规律写程序,同时也知道flag标志位的重要性。

  1. static int F1(int m)
  2. {
  3. int sum =;
  4. bool flag =true;
  5. for (int i = ; i <= m; i++)
  6. {
  7. if (flag) //一次是默认是True,下下也为True
  8. sum += i;
  9. else
  10. sum -= i;
  11. flag = !flag;
  12.  
  13. }
  14. return sum;
  15. }
  16.  
  17. //通过奇偶性
  18. static int F2(int m)
  19. {
  20. int sum = ;
  21. for (int i = ; i <= m; i++)
  22. {
  23. if (i % >) //即为奇数
  24. sum += i;
  25. else
  26. sum -= i;
  27. }
  28. return sum;
  29. }

二,有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。

  1. static string Reverse()
  2. {
  3. string s = "I am a good man";
  4. string[] arr = s.Split(' ');
  5. string res = "";
  6. for (int i = arr.Length - ; i >= ; i--)
  7. {
  8. res += arr[i];
  9. if (i > )
  10. res += " ";
  11. }
  12. return res;
  13. }

三.冒泡排序

  1. namespace BubbleSorter
  2. {
  3. class BubbleSorter
  4. {
  5. private static int[] myArray;
  6. private static int arraySize;
  7. public static void Sort(int[] a)
  8. {
  9. myArray = a;
  10. arraySize = myArray.Length;
  11. BubbleSort(myArray);
  12. }
  13.  
  14. public static void BubbleSort(int[] myArray)
  15. {
  16. for (int i = ; i < myArray.Length-; i++) //由于数组的特点,从0开始,但myArray的长度为5,所以需要减1,实际进行了(0~3)4趟循环
  17. {
  18. for (int j =; j < myArray.Length -- i; j++) //内层循环的要点是相邻比较。当j=4的时候,就推出循环了
  19. {
  20. if (myArray[j] > myArray[j + ])
  21. {
  22. Swap(ref myArray[j], ref myArray[j + ]);
  23. }
  24. }
  25. }
  26. }
  27.  
  28. private static void Swap(ref int left, ref int right)
  29. {
  30. int temp;
  31. temp = left;
  32. left = right;
  33. right = temp;
  34. }
  35.  
  36. static void Main(string[] args)
  37. {
  38. int[] a = { , , , , };
  39. BubbleSorter.Sort(a);
  40. foreach (int i in a)
  41. {
  42. Console.WriteLine(i);
  43. }
  44. Console.Read();
  45. }
  46. }
  47. }

四.选择排序

选择排序是一种简单直观的排序算法。它的工作原理如下。

首先在未排序列中找到最小的元素,存放到排序序列的起始位置。然后,在从剩余未排序元素中继续寻找最小的元素,放到排序序列末尾。以此类推,直到所有元素均排序完毕。

  1. class SelectSorter
  2. {
  3. private static int[] myArray;
  4. private static int arraySize;
  5. public static void Sort(int[] a)
  6. {
  7. myArray = a;
  8. arraySize = myArray.Length;
  9. SelectSort(myArray);
  10. }
  11. public static void SelectSort(int[] myArray)
  12. {
  13. int i, j, smallest;
  14. for(i=;i<myArray.Length-;i++) //数据起始位置,从0到倒数第二个数据
  15. {
  16. smallest = i; //记录最小数的下标
  17. for (j = i + ; j < myArray.Length; j++) //在剩下的数据中寻找最小数
  18. {
  19. if (myArray[j] < myArray[smallest]) {
  20. smallest = j; //如果有比它更小的,记录下标
  21. }
  22. }
  23. Swap(ref myArray[i], ref myArray[smallest]); //将最小数据和未排序的第一个数交换
  24. }
  25. }
  26.  
  27. private static void Swap(ref int left, ref int right)
  28. {
  29. int temp;
  30. temp = left;
  31. left = right;
  32. right = temp;
  33. }
  34.  
  35. static void Main(string[] args)
  36. {
  37. int[] a = new int[] { , , , , };
  38. SelectSorter.Sort(a);
  39. for (int i = ; i < a.Length; i++)
  40. {
  41. System.Console.WriteLine(a[i]);
  42. }
  43. System.Console.Read();
  44. }
  45. }

五.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5.  
  6. //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
  7. //分解题目
  8. //条件:四个数字1、2、3、4 ;三位数:百位、十位、个位
  9. //要求:互不相同;无重复数字:每个数字在三位中只出现一次
  10. //结果:多少个? 都是多少?
  11.  
  12. int count = ; //统计个数
  13. for (int bw = ; bw <= ; bw++)
  14. {
  15. for (int sw = ; sw <= ; sw++)
  16. {
  17. if (sw!= bw) //很显然,只有百位和十位不同的情况下才能谈个位。
  18. {
  19. for (int gw = ; gw <= ; gw++)
  20. {
  21. if (gw != sw && gw != bw) //百位用过的,十位就不能用;百位和十位都用过的,个位就不能用
  22. {
  23. count++;
  24. Console.WriteLine("{0}{1}{2}", bw, sw, gw);
  25. }
  26. }
  27. }
  28. }
  29. }
  30. Console.WriteLine("一共有{0}个", count);
  31. Console.Read();
  32.  
  33. }
  34. }

选择排序方法2

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace 选择排序
  7. {
  8. //选择排序与冒泡排序比较的次数是一样的
  9. //选择排序的交换次数要比冒泡排序的交换次数少
  10.  
  11. class Program
  12. {
  13. static void Main(string[] args)
  14. {
  15. int[] arr = { , , , , , , , }; //待排序数组
  16. SelectSort(arr); //调用选择排序函数
  17. }
  18.  
  19. private static void SelectSort(int[] arr)
  20. {
  21. int temp = ;
  22. for (int i = ; i < arr.Length - ; i++)
  23. {
  24. int minVal = arr[i]; //假设 i 下标就是最小的数
  25. int minIndex = i; //记录我认为最小的数的下标
  26.  
  27. for (int j = i + ; j < arr.Length; j++) //这里只是找出这一趟最小的数值并记录下它的下标
  28. {
  29. //说明我们认为的最小值,不是最小
  30. if (minVal > arr[j]) //这里大于号是升序(大于是找出最小值) 小于是降序(小于是找出最大值)
  31. {
  32. minVal = arr[j]; //更新这趟最小(或最大)的值 (上面要拿这个数来跟后面的数继续做比较)
  33. minIndex = j; //记下它的下标
  34. }
  35. }
  36. //最后把最小的数与第一的位置交换
  37. temp = arr[i]; //把第一个原先认为是最小值的数,临时保存起来
  38. arr[i] = arr[minIndex]; //把最终我们找到的最小值赋给这一趟的比较的第一个位置
  39. arr[minIndex] = temp; //把原先保存好临时数值放回这个数组的空地方, 保证数组的完整性
  40. }
  41. //控制台输出
  42. foreach (int item in arr)
  43. {
  44. Console.WriteLine("C#遍历:{0}", item);
  45. }
  46. }
  47. }
  48. }

C#的常见算法(面试)的更多相关文章

  1. PHP常见算法-面试篇(2)

    1.顺序查找 思路分析: 从数组的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功:如果到最后一个元素仍没有目标元素,则查找失败. 代码实现: <?php function se ...

  2. PHP常见算法-面试篇(1)

    1.冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将 ...

  3. 数据结构+算法面试100题~~~摘自CSDN

    数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调 ...

  4. 字符串匹配常见算法(BF,RK,KMP,BM,Sunday)

    今日了解了一下字符串匹配的各种方法. 并对sundaysearch算法实现并且单元. 字符串匹配算法,是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目.此算法通常输入为原字符串(strin ...

  5. 常见算法(logistic回归,随机森林,GBDT和xgboost)

    常见算法(logistic回归,随机森林,GBDT和xgboost) 9.25r早上面网易数据挖掘工程师岗位,第一次面数据挖掘的岗位,只想着能够去多准备一些,体验面这个岗位的感觉,虽然最好心有不甘告终 ...

  6. 常见算法合集[java源码+持续更新中...]

    一.引子 本文搜集从各种资源上搜集高频面试算法,慢慢填充...每个算法都亲测可运行,原理有注释.Talk is cheap,show me the code! 走你~ 二.常见算法 2.1 判断单向链 ...

  7. Java && Python 算法面试常用类以及方法总结

    数据结构 逻辑结构上: 包括集合,线性结构,非线性结构. 存储结构: 顺序存储,链式存储,索引存储,散列存储. Java 常见数据结构 大专栏  Java && Python 算法面试 ...

  8. C++常见的面试题目整理

    本文列出C++面试中经常遇到的一些问题,都是一些常见的面试考点,如果后续遇到其他常见面试问题还会再次更新.希望对近期参加面试的同学有一些帮助.先后顺序与问题的重要性无关,查看的时候,最好是全面了解一下 ...

  9. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  10. Hadoop学习笔记—12.MapReduce中的常见算法

    一.MapReduce中有哪些常见算法 (1)经典之王:单词计数 这个是MapReduce的经典案例,经典的不能再经典了! (2)数据去重 "数据去重"主要是为了掌握和利用并行化思 ...

随机推荐

  1. Oracle与Mysql区别简述

    在Mysql中,一个用户下可以创建多个库: 而在Oracle中,Oracle服务器是由两部分组成 数据库实例[理解为对象,看不见的] 数据库[理解为类,看得见的] 一个数据库实例可拥有多个用户,一个用 ...

  2. mysql不能插入中文数据

    上次遇到的是向mysql插入中文数据,中文数据乱码了.这次直接就不能插入中文数据了!!!! 参考博文:http://blog.csdn.net/generalyy0/article/details/7 ...

  3. 使用Spring的JavaConfig 和 @Autowired注解与自动装配

    1 JavaConfig  配置方法 之前我们都是在xml文件中定义bean的,比如: 1 2 3 4 5 6 7 8 <beans xmlns="http://www.springf ...

  4. Docker入门之二镜像

    Docker大部分的操作都是围绕三大核心概念:镜像.容器.仓库.学Docker首先得了解这几个词.这几个词可能平时也会有涉及,但Docker中可能不是同样得概念. 一.三大核心概念 镜像:可能在安装软 ...

  5. shell脚本获取文件中key/value的小方法

    方法有N种,awk.sad.grep.cut... 以上几种方式不写了,就写两个不太常用到的. 废话少说,直接上代码: cat a.txt aa.gif=aaaa.gif bb.gif=bbbb.gi ...

  6. Apache Spark 2.2.0 中文文档 - Submitting Applications | ApacheCN

    Submitting Applications 在 script in Spark的 bin 目录中的spark-submit 脚本用与在集群上启动应用程序.它可以通过一个统一的接口使用所有 Spar ...

  7. WPF控件自适应屏幕

    如果说界面设计,那么自适应问题一定无法避免,今天就来分享一下,wpf如何实现自适应,先看一下效果:(文末添加源代码下载)     基本思路就是用 Grid 的网格,进行宽度的自动填充适应,  不过对于 ...

  8. org.springframework.core.io包内的源码分析

    前些日子看<深入理解javaweb开发>时,看到第一章java的io流,发觉自己对io流真的不是很熟悉.然后看了下JDK1.7中io包的一点点代码,又看了org.springframewo ...

  9. UI自动化测试简介及Selenium工具的介绍和环境搭建

    自动化测试简介 1.1何为自动化测试? 是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程.换言之,就是以程序实现的方式来代替手工测试. 1.2自动化测试分类 分为功能自动化测 ...

  10. SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html

    SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...