[置顶] 快速排序

概述快速排序和归并排序一样也是分而治之策略的应用,基本思路是在数组中选取一个主元,以它为标准,遍历数组把小于它的数放在右边,大于它的数放在左边。递归上述过程直至有序。选主元选主元与划分子集这两个问题关乎快速排序的效率问题。选主元有很多方式,比如直接那第一个数作主元,那么当数组基本有序时那么时间复杂度就变成了O(n^2)了,而不是O(nlogn),也可以利用随机函数来选取下标,从而确定主元,但是ran...
阅读(855) 评论(0)

[置顶] 递归求序列最大最小值

这学期总算开了算法课了,不得不吐槽,大四上学期开这课,时间很尴尬。不多说了,第一节课老师留了道题,要求在一个递归函数里求序列的最大最小值。算法思路: 1)如果数组长度为1,则最大值与最小值相等 2)如果数组长度为2,则最大值与最小值各位其中一个。 3)如果数组长度大于2,那么采用二分策略,递归求前一半的最大最小值,与后一半的最大最小值,之后两两比较后的数组的最大最小值。代码如下:#includ...
阅读(582) 评论(0)

快速排序

解题思路: 1)设k=a[0], 将k挪到适当位置,使得比k小的元素都在k左边,比k大的元素都在k右边,和k相等的,不关心在k左右出现均可 (O(n)时间完成) 2) 把k左边的部分快速排序 3) 把k右边的部分快速排序Java代码如下:import java.util.Random; import java.util.Scanner;public class Main { public...
阅读(478) 评论(0)

求排列的逆序数

描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。输入 第一行输入一个整数T表示测试数据的组数(1<=T<=5) 每组测试数据的每一行是一个整数N表示数列中共有N个元素(2〈=N〈=1000000) 随后...
阅读(208) 评论(0)

归并排序

归并排序的基本思路: 1) 把前一半排序 2) 把后一半排序 3) 把两半归并到一个新的有序数组,然后再拷贝回原数组,排序完成。 Java代码如下:import java.util.Scanner;public class Main { public static void Merge(int[] num,int start,int mid,int end, int[]...
阅读(250) 评论(0)
    个人资料
    • 访问:111118次
    • 积分:4389
    • 等级:
    • 排名:第7565名
    • 原创:321篇
    • 转载:0篇
    • 译文:0篇
    • 评论:71条
    博客专栏
    最新评论