摘要:
1:需求已知数组int[] max={72, 54, 59, 30, 31, 78, 2, 77, 82, 72};用快速排序算法按降序对其进行排列,并返回数组。思路:快速排序有两个方向,左边的i下标一直往右走,当a[i] a[center_index]。如果i和j都走不动了,i j。 交换a[j]和a[center_index],完成一趟快速排序。在中枢元素和a[j]交换的时候,很有可能把前面的元素的稳定性打乱,比如序列为 5 3 3 4 3 8 9 10 11, 现在中枢元素5和3(第5个元素,下标从1开始计)交换就会把元素3的稳定性打乱,所以快速排序是一个不稳定的排序算法,不稳定发生在. 阅读全文
posted @ 2013-07-20 16:59
OpenCsharp.Net
阅读(330)
评论(0)
推荐(0)
摘要:
1:原理选择排序是从冒泡排序演化而来的,每一轮比较得出最小的那个值,然后依次和每轮比较的第一个值进行交换。目的:按从小到大排序。方法:假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72第一轮依次比较相邻两个元素,将最小的一个元素的索引和值记录下来,然后和第一个元素进行交换。如上面的数组中,首先比较的是72,54,记录比较小的索引是54的索引1。接着比较54和59,比较小的索引还是1。直到最后得到最小的索引是2的索引6,然后索引6和0互相交换。第二轮比较的时候是最小的一个元素和索引1进行交换。第三轮、第四轮以此类推。2:代码class Program{ .. 阅读全文
posted @ 2013-07-20 16:50
OpenCsharp.Net
阅读(255)
评论(0)
推荐(0)
摘要:
1:原理以此比较相邻的两个元素,每次比较完毕最大的一个字跑到本轮的末尾。目的:按从小到大排序。方法:假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。72和54比较的结果就是,54在前,72在后;然后72和59比较的结果,59在前,72在后;以此类推,第一轮比较之后的结果是:54, 59, 30, 31, 72, 2, 77, 78, 72, 82经过第一轮比较,最大的元素跑到了最后一个,所以第二轮比较,最后一个元素不需要进行比较了。第二轮还是从索引0和1开始比较,只是不许要比较最后一个了,算法还是 阅读全文
posted @ 2013-07-20 09:20
OpenCsharp.Net
阅读(2516)
评论(0)
推荐(0)

浙公网安备 33010602011771号