摘要: 1. 简述 假设待排序数组为 int array[], 数组长度为n。 第1趟排序,从array[0]-array[n-1]中,选择最小的元素,如果该元素不是array[0],则与其交换。 第2趟排序,从array[1]-array[n-1]中,选择最小的元素,如果该元素不是array[1],则与其交换。 ··· 第n-1趟排序,从array[n-2]-array[n-1]中,选择最小的元素,如果该元素不是array[n-2],则与其交换。2. 复杂度 交换的次数介于[0,n-1],但是比较的次数是(n+1)*n/2左右。最好、最坏和平均的比较次数都是固定的,因此 阅读全文
posted @ 2011-06-07 22:38 xiaodongrush 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 假设待排序数组为 int array[], 数组长度为n。第1趟,认为array[0]-array[0]已经排序,把array[1]插入到合适的位置。 第2趟,认为array[0]-array[1]已经排序,把array[2]插入到合适的位置。 ···第n-1趟,认为array[0]-array[n-2]已经排序,把array[n-1]插入到合适的位置。2. 复杂度 最好的时间复杂度是O(n),对已经排序好的数组,只需要n-1次比较就可以了。平均时间复杂度和最坏时间复杂度都是O(n^2)。 在每次趟中,寻找合适位置时,可以使用二分查找的方法,来减少比较 阅读全文
posted @ 2011-06-07 16:24 xiaodongrush 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 1. 简述 假设待排序数组为 int array[], 数组长度为n。 第1趟在array[0]-array[n-1]范围内,从后向前依次比较,把较小交换到前面,最终最小的元素会站在array[0]里面。 第2趟在array[1]-array[n-1]范围内,··· ,最终第二小的元素会站在array[1]里面。 ... 第n-1趟,在array[n-2]-array[n-1]范围内,··· , 最终第n-1小的元素会站在array[n-2]里面。 至此,排序结束。2. 复杂度时间复杂度T=O(n*n),而且如果按照上面的算法来实现, 阅读全文
posted @ 2011-06-07 15:50 xiaodongrush 阅读(321) 评论(1) 推荐(0) 编辑