各种算法总结三
今天,继续看看我们的额基础算法总结之, 直接选择排序和我们的堆栈排序;
前面的几种基础算法中,我们都发现一个规律吧,也就是:比较嘛,可能需要一个参数滴啊;我们的选择排序也是这样的滴呀;
我们先求出数组中最小的一个值滴呀;
第一土方法:(最小的一个数据,它肯定比数组中的每一数都要小滴呀)
public static void FuckSort() { var arr = new int[8] { 2, 5, 3, 1, 34, 56, 434, 8 }; var len = arr.Length; var min = 0; for (var i = 0; i < len; i++) { var count = 0; for (var j = 0; j < len; j++) { if (arr[i] < arr[j]) { count++; //它必须必数组中的每一值都小滴呀; } } if (count == len - 1) //数组中最小额一个值 { min = arr[i]; Console.Write("min value is:{0}",min); break; } } }
代码优化,逐渐递减的方式,没有必要对每一个数据都进行比较滴呀;就是各种递减滴呀;
第一个数据a,找到比a小的b,交换,再找比b还小的c,再照比c还小的,就这样的不断地额递减滴呀;始终保持,自己手中拿到的最小的一个值滴呀;
var arr = new int[8] { 9, 5, 3, 16, 2, 56, 434, 8 }; var len = arr.Length; var min = arr[0]; //选择一个参照物体滴呀; for (var i = 0; i < len; i++) { if (arr[i] < min) { min = arr[i]; } } Console.WriteLine("the min value is:{0}",min);
然后接着就是我们的快速选择排序滴呀;
public static void DirectSort() { //直接选择排序的基本思想:每次都选择一个当前数组中最小的一个值滴呀; //是相对简单的一种做法; //这样我们的排序结果就出来滴呀; var arr= new int[8] { 2, 5, 3, 1,34,56,434, 8 }; var len = arr.Length; int temp; var position = 0; for(var i = 0; i < len; i++) { //最小的一个数,它比数组中的任何一个人都要小弟呀 position = i; for(var j = 0+i; j < len; j++) //比较的次数也在一次次的减少滴呀; { if (arr[position]>arr[j]) { position = j; //一种逐渐递减的方式,来进行不断寻找; } } temp = arr[i]; arr[i] = arr[position]; arr[position] = temp; } //这样我们额排序就算是基本的结束了滴呀;效果还是不错滴呀; foreach(var i in arr) { Console.Write(" {0} ",i); } //效果还是不错滴呀; Console.ReadLine(); }
//总的来说,效果还是不错滴呀;
好吧,这个基本的算法,我们就算是搞定了;