标签:nbsp pre aop ret 操作 过程 length 个数 顺序
最近两个月多次面试的过程中发现自己对算法的相关知识涉猎甚少,也逐渐的开始了解到算法的重要性。现在逐步对一些常用算法进行整理和归类,与大家分享的同时也能慢慢的减少自己的盲区。
1.快速排序:
快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序在编码上来说相对简单,直接调用Array的Sor()方法即可轻易的实现对数组的排序。
1 /// <summary> 2 /// 快速排序 3 /// </summary> 4 /// <returns></returns> 5 public int[] Kuaisu() 6 { 7 int[] KS = { 2, 1, 8, 3, 9, 2 }; 8 9 Array.Sort(KS); 10 11 return KS; 12 }
2.冒泡排序:
冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
1 /// <summary> 2 /// 冒泡排序 3 /// </summary> 4 /// <returns></returns> 5 public int[] Maopao() 6 { 7 int[] MP = {2,1,8,3,9,2 }; 8 9 int temp; 10 11 for (int i = 0; i < MP.Length-1; i++) 12 { 13 for (int j = i + 1; j <= MP.Length-1; j++) 14 { 15 if (MP[i] > MP[j]) 16 { 17 temp = MP[i]; 18 19 MP[i] = MP[j]; 20 21 MP[j] = temp; 22 } 23 } 24 } 25 return MP; 26 }
3.选择排序:
选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
1 /// <summary> 2 /// 选择排序 3 /// </summary> 4 /// <returns></returns> 5 public int[] Xuanze() 6 { 7 int[] XZ = { 2, 1, 8, 3, 9, 2 }; 8 9 for (int i = 0; i < XZ.Length; i++) 10 { 11 int min = XZ[i]; 12 13 int temp; 14 15 int index = i; 16 17 for (int j = i + 1; j < XZ.Length; j++) 18 { 19 if (XZ[j] < min) 20 { 21 min = XZ[j]; 22 23 index = j; 24 } 25 } 26 27 temp = XZ[i]; 28 29 XZ[i] = min; 30 31 XZ[index] = temp; 32 } 33 34 return XZ; 35 }
4.插入排序:
插入排序的基本操作就是将一个数据与已经排好的序列注意比较,插入到合适的位置,从而得到一个新的有序数据。
1 /// <summary> 2 /// 插入排序 3 /// </summary> 4 /// <returns></returns> 5 public int[] Charu() 6 { 7 int[] CR = { 2, 1, 8, 3, 9, 2 }; 8 9 for (int i = 1; i < CR.Length; i++) 10 { 11 for (int j = i; j > 0 ;j--) 12 { 13 int temp; 14 15 int index = j - 1; 16 17 if (CR[j] < CR[index]) 18 { 19 temp = CR[index]; 20 21 CR[index] = CR[j]; 22 23 CR[j] = temp; 24 } 25 else 26 break; 27 } 28 } 29 return CR; 30 }
标签:nbsp pre aop ret 操作 过程 length 个数 顺序
原文地址:http://www.cnblogs.com/SunshineAgain/p/6065990.html