C#面试题常见算法

Posted 程序员有道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#面试题常见算法相关的知识,希望对你有一定的参考价值。

排序算法是我们编程中遇到的最多的算法。目前主流的算法有8种。

今天给大家介绍三种排序算法:冒泡排序(o(n2)),选择排序(o(n2)),插入排序(o(n2)) 



1、选择排序是我觉得最简单暴力的排序方式了。

以前刚接触排序算法的时候,感觉算法太多搞不清,唯独记得选择排序的做法及实现。


原理:找出参与排序的数组最大值,放到末尾(或找到最小值放到开头) 


过程解析:将剩余数组的最小数交换到开头

2、冒泡排序

冒泡排序是笔试面试经常考的内容,虽然它是这些算法里排序速度最慢的(汗),后面有测试为证。


原理:从头开始,每一个元素和它的下一个元素比较,如果它大,就将它与比较的元素交换,否则不动。


这意味着,大的元素总是在向后慢慢移动直到遇到比它更大的元素。所以每一轮交换完成都能将最大值冒到最后。

 

C#面试题常见算法(一)


过程解析:中需要注意的是j<i,每轮冒完泡必然会将最大值排到数组末尾,所以需要排序的数应该是在减少的。 


3.插入排序

插入排序是一种对于有序数列高效的排序。非常聪明的排序。只是对于随机数列,效率一般,交换的频率高。


原理:通过构建有序数列,将未排序的数从后向前比较,找到合适位置并插入。

 

过程解析:将要排序的数(索引为i)存储起来,向前查找合适位置j+1,将i-1到j+1的元素依次向后


移动一位,空出j+1,然后将之前存储的值放在这个位置。


这个方法写的不如维基上的简洁清晰,由于合适位置是j+1所以多出了对j==0的判断,但实际效率影响无差别。


建议比照维基和我写的排序,自行选择。


看完本文有收获?请转发分享给更多人

关注「.net学院」,提升.Net技能 




以上是关于C#面试题常见算法的主要内容,如果未能解决你的问题,请参考以下文章

C#面试题常见排序算法

C#常见的算法面试题

C#常见的算法面试题

JS面试题(常见算法编程)

Java面试题常见算法总结

数据结构和算法面试常见题必考以及前端面试题