C#的常见算法(面试)(转)
一、求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
//方法一,通过顺序规律写程序,同时也知道flag标志位的重要性。
static int F1(int m) { int sum =0; bool flag =true; for (int i = 1; i <= m; i++) { if (flag) //一次是默认是True,下下也为True sum += i; else sum -= i; flag = !flag; } return sum; } //通过奇偶性 static int F2(int m) { int sum = 0; for (int i = 1; i <= m; i++) { if (i % 2 >0) //即为奇数 sum += i; else sum -= i; } return sum; }
View Code
二,有一个字符串 "I am a good man",设计一个函数,返回 "man good a am I"。
static string Reverse() { string s = "I am a good man"; string[] arr = s.Split(' '); string res = ""; for (int i = arr.Length - 1; i >= 0; i--) { res += arr[i]; if (i > 0) res += " "; } return res; }
View Code
三.冒泡排序
namespace BubbleSorter { class BubbleSorter { private static int[] myArray; private static int arraySize; public static void Sort(int[] a) { myArray = a; arraySize = myArray.Length; BubbleSort(myArray); } public static void BubbleSort(int[] myArray) { for (int i = 0; i < myArray.Length-1; i++) //由于数组的特点,从0开始,但myArray的长度为5,所以需要减1,实际进行了(0~3)4趟循环 { for (int j =0; j < myArray.Length -1- i; j++) //内层循环的要点是相邻比较。当j=4的时候,就推出循环了 { if (myArray[j] > myArray[j + 1]) { Swap(ref myArray[j], ref myArray[j + 1]); } } } } private static void Swap(ref int left, ref int right) { int temp; temp = left; left = right; right = temp; } static void Main(string[] args) { int[] a = { 2, 1, 5, 10, 9 }; BubbleSorter.Sort(a); foreach (int i in a) { Console.WriteLine(i); } Console.Read(); } } }
View Code
四.选择排序
选择排序是一种简单直观的排序算法。它的工作原理如下。
首先在未排序列中找到最小的元素,存放到排序序列的起始位置。然后,在从剩余未排序元素中继续寻找最小的元素,放到排序序列末尾。以此类推,直到所有元素均排序完毕。
class SelectSorter { private static int[] myArray; private static int arraySize; public static void Sort(int[] a) { myArray = a; arraySize = myArray.Length; SelectSort(myArray); } public static void SelectSort(int[] myArray) { int i, j, smallest; for(i=0;i<myArray.Length-1;i++) //数据起始位置,从0到倒数第二个数据 { smallest = i; //记录最小数的下标 for (j = i + 1; j < myArray.Length; j++) //在剩下的数据中寻找最小数 { if (myArray[j] < myArray[smallest]) { smallest = j; //如果有比它更小的,记录下标 } } Swap(ref myArray[i], ref myArray[smallest]); //将最小数据和未排序的第一个数交换 } } private static void Swap(ref int left, ref int right) { int temp; temp = left; left = right; right = temp; } static void Main(string[] args) { int[] a = new int[] { 4, 2, 1, 6, 3 }; SelectSorter.Sort(a); for (int i = 0; i < a.Length; i++) { System.Console.WriteLine(a[i]); } System.Console.Read(); } }
View Code
五.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
class Program { static void Main(string[] args) { //有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? //分解题目 //条件:四个数字1、2、3、4 ;三位数:百位、十位、个位 //要求:互不相同;无重复数字:每个数字在三位中只出现一次 //结果:多少个? 都是多少? int count = 0; //统计个数 for (int bw = 1; bw <= 4; bw++) { for (int sw = 1; sw <= 4; sw++) { if (sw!= bw) //很显然,只有百位和十位不同的情况下才能谈个位。 { for (int gw = 1; gw <= 4; gw++) { if (gw != sw && gw != bw) //百位用过的,十位就不能用;百位和十位都用过的,个位就不能用 { count++; Console.WriteLine("{0}{1}{2}", bw, sw, gw); } } } } } Console.WriteLine("一共有{0}个", count); Console.Read(); } }
View Code
选择排序方法2
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace 选择排序 {//选择排序与冒泡排序比较的次数是一样的//选择排序的交换次数要比冒泡排序的交换次数少class Program{static void Main(string[] args){int[] arr = { 15, 0, 10, 50, 55, 35, 15, 20 }; //待排序数组SelectSort(arr); //调用选择排序函数 }private static void SelectSort(int[] arr){ int temp = 0;for (int i = 0; i < arr.Length - 1; i++){int minVal = arr[i]; //假设 i 下标就是最小的数int minIndex = i; //记录我认为最小的数的下标for (int j = i + 1; j < arr.Length; j++) //这里只是找出这一趟最小的数值并记录下它的下标 {//说明我们认为的最小值,不是最小if (minVal > arr[j]) //这里大于号是升序(大于是找出最小值) 小于是降序(小于是找出最大值) {minVal = arr[j]; //更新这趟最小(或最大)的值 (上面要拿这个数来跟后面的数继续做比较)minIndex = j; //记下它的下标 }}//最后把最小的数与第一的位置交换temp = arr[i]; //把第一个原先认为是最小值的数,临时保存起来arr[i] = arr[minIndex]; //把最终我们找到的最小值赋给这一趟的比较的第一个位置arr[minIndex] = temp; //把原先保存好临时数值放回这个数组的空地方, 保证数组的完整性 }//控制台输出foreach (int item in arr){Console.WriteLine("C#遍历:{0}", item);}}} }
View Code
转载至:https://www.cnblogs.com/HiWord-ToFutureGKY/p/7742559.html
转载于:https://www.cnblogs.com/wsl2011/p/10219336.html
C#的常见算法(面试)(转)相关推荐
- 算法面试避坑指南,助你轻松应对Java面试
一般来说想要成为Java开发,除了需要学习相关的技术之外,还需要学习基础知识,以便应对Java开发面试. 算法面试避坑指南五大常见算法 面试的过程其实也是一个自我认识和学习的过程,即便暂时没打算跳槽, ...
- Java常见的面试算法题:实现两个线程交替打印1到100的数
Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...
- 常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)
常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可) 比较典型的题目,如下有: 题目一: 1.启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程 ...
- JavaScript 面试中常见算法问题详解
JavaScript 面试中常见算法问题详解,翻译自 https://github.com/kennymkchan/interview-questions-in-javascript.下文提到的很多问 ...
- 力扣高频算法php_互联网公司最常见的面试算法题有哪些?
很多时候,你即使提前复习了这些最常见的面试算法题,你依旧无法通过算法面试! 为什么?你在提前准备复习的时候,在网上找了半天相应题目的分析文章,但你看了就是不懂. 你在面试的时候,卡壳了,一时间忘了怎么 ...
- 语言高精度算法阶乘_JavaScript中的算法(附10道面试常见算法题解决方法和思路)...
https://juejin.im/post/6844903811505455118 Introduction 面试过程通常从最初的电话面试开始,然后是现场面试,检查编程技能和文化契合度.几乎毫无例外 ...
- Java面试常见算法
在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序.二叉树查找等等. 本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了 ...
- 【算法面试】leetcode最常见的150道前端面试题 --- 中等题
点击上方 前端瓶子君,关注公众号 回复算法,加入前端编程面试算法每日一题群 兄弟姐妹们,中等题来了,本篇17道,剩下63道,每周更新10道! 之前简单题的链接如下: [算法面试]leetcode最常见 ...
- 互联网公司最常见的面试算法题大集合!
转载于 新智元 来源:Github 编辑:元子 [导读]LeetCode是一个美国的在线编程网站,收集了各个大厂的笔试面试题,对找工作的毕业生和开发者来说,非常有价值.很多求职者都会在Leet ...
- 计算机领域一般面试是会问到的各类常见算法的Big-O复杂度
原文摘自 http://bigocheatsheet.com/ 本文覆盖计算机领域一般面试是会问到的各类常见算法的Big-O复杂度. Hi there! This webpage covers th ...
最新文章
- elment-ui文件上传详解
- 语音识别:时间序列的匹配算法(Needleman-Wunsch 算法)
- [转]C++中sleep()函数的使用
- linux 路由表 的一些相关资料
- 浏览器是如何工作的?(转载)
- SAP UI5应用的footer区域绘制原理和入口
- mybatis学习(9):mybatis连接mysql数据库
- 美国顶尖大学的博士是怎样练成的?
- 【然天一】随机读写(4k)百盘天梯
- js基础知识学习(二)
- jQuery Validate 表单验证插件----Validate简介,官方文档,官方下载地址
- 判断一个网站用什么服务器
- Catharanthus roseus(长春花碱)的生物合成
- android 环境配置 与 运行错误
- 更改ESXi主机root用户密码
- ElasticSearch全文搜索引擎之查询API操作详解
- java程序无法启动_无法打开java小程序?小迅支招
- 计算机上的字体怎么安装,电脑怎么安装字体
- Chrome启动参数大全
- bitvise ssh client 连接linux,推荐SSH客户端Bitvise SSH Client
热门文章
- 全球及中国生物识别车辆访问技术行业十四五应用现状及未来展望规划报告2022-2027年
- 枚举IHTMLDocument2中所有IFRAME的内容
- python地图 两点距离_使用Python调用百度地图Api获取两地距离
- 京东对话中国农民丰收节交易会 供应链下沉打通产销全链
- HTML: 字體設置
- 新闻资讯APP开发流程(八)-- ContentView.js
- windows phone7 学习笔记15——Bing Maps
- [转]Java 关闭线程的安全方法
- 2020年PMCAFF大咖分享合集(有回放)
- 马斯克采访:要么死的安然,要么活得绚烂