随笔分类 -  算法(C#)

摘要:String.Join 文档 StringBuilder 文档 这两天刷 Leedcode 做到一道 String 的题时突然想到这俩对比的问题,于是查了一下资料并简单对比了一下。 首先对于 151. Reverse Words in a String 这道题而言,对比提交结果如下: 明显 Stri 阅读全文
posted @ 2019-04-20 13:43 Hydor 阅读(1473) 评论(0) 推荐(0)
摘要:拿{ 6,2,4,6,1}举例。a[0]a[1]a[2]a[3]a[4]62461有两个6,a[0]和a[3]。排序结果就有两种可能:12466原a[4]原a[1]原a[2]原a[0]原a[3]原a[4]原a[1]原a[2]原a[3]原a[0]如果排序结束后,a[0]可以保证一定在a[3]前头,也就是他们原有的顺序不变,那这种排序算法就是稳定的。(比如常见的冒泡排序、基数排序、插入排序、归并排序、桶排序、二叉树排序等都是稳定的排序算法)反之,如果不能保证原有顺序,这种算法就是不稳定的。(比如常见的选择排序,希尔排序,堆排序,快速排序等都是不稳定的排序算法)要证明一种排序算法不稳定,举出一组例子 阅读全文
posted @ 2014-01-23 05:47 Hydor 阅读(9908) 评论(0) 推荐(6)
摘要:算法思路:每趟走访元素揪出一个最小(或最大)的元素,和相应位置的元素交换。(用数组{6,9,13,2,4,64} 举例){},{6 9 13 【2】 4 64} //第一趟,揪出2{2},{ 9 13 6 4 64} //把2和第一位的元素互换{2},{ 9 13 6 【4】 64} //第二趟,揪出4{2 4},{ 13 6 9 64} //把4和第二位的元素互换... ...性质:选择排序是一种原地排序(只有常数个元素存到数组以外的空间),最坏的时间复杂度,和平均时间复杂度都是n2。它是不稳定的排序算法。。*... 阅读全文
posted @ 2014-01-23 05:17 Hydor 阅读(1360) 评论(0) 推荐(1)
摘要:算法思路:重复走访每两个相邻元素,比较大小交换位置,直至排序完成。有兴趣电话可以看一下这个【冒泡排序踢踏舞】的视频,很形象的演示了排序过程,额呵呵~~性质:冒泡排序是一种原地排序(只有常数个元素存到数组以外的空间),最坏的时间复杂度,和平均时间复杂度都是n2。冒泡法是稳定的。。*注:冒泡排序是算法入门级别,是面试笔试时候的禁术,古往今来死在冒泡法上的应届生真可谓前仆后继...代码:int[] BubbleSort1(int[] a) { int num; for (int i = a.Length-1; i>0; i--) //外层循... 阅读全文
posted @ 2014-01-22 03:43 Hydor 阅读(442) 评论(0) 推荐(0)
摘要:算法思路:将n个元素分成【已排序】和【未排序】两部分。每次将【未排序】中的一个元素取出,插入到已排序中的相应位置。直至所有元素排序完毕。 【已排序】 【未排序】 { { a[0] } , { a[1],a[2],a[3]....a[n-1] }} { { a[0],a[1]} , { a[2],a[3]....a[n-1] } } { { a[0],a[1],a[2]} , { a[3]......a[n-1] } }性质:插入排序是一种原地排序(只有常数个元素存到数组以外的空间),平均时间复杂度和最坏的时间复杂度都是n2。且它是稳定的... 阅读全文
posted @ 2014-01-17 03:54 Hydor 阅读(292) 评论(0) 推荐(0)