数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。

解法一，将这个数组进行排序（快排），那么位于数组中间的数字一定就是那个出现次数超过数组长度一半的数字。然后计算这个数字出现的次数，如果次数大于长度的一半，则他就是我们所要找的，否则就没有。

解法二，由快排的思想，可以得到，每次partition得到的数字，如果他的下标恰好在n/2，那么这个数字就是数组的中位数。如果他的下标大于n/2，那么中位数位于塔的左边，否则位于它的右边。循环处理，直到是中位数或者只剩一位数。

解法三：由题意可以得到，这个数字出现的次数比其他所有数字出现的次数的和还要多。保存一个数字和次数，如果下一个数字和我们保存的数字相同，则次数加1.否则次数减1。如果次数减到了0，则就将次数置为1，并将保存的数字替换为当前的数字。那么要找的数字肯定是最后一次设为1时对应的数字。