算法基础-排序算法

1. 冒泡排序(Bubble Sort)
2. 选择排序(Selection Sort)
3. 插入排序(Insertion Sort)
4. 希尔排序(Shell Sort)
5. 归并排序(Merge Sort)
6. 快速排序(Quick Sort)
7. 堆排序(Heap Sort)
8. 计数排序(Counting Sort)
9. 桶排序(Bucket Sort)
10. 基数排序(Radix Sort)

1、冒泡排序

原理:

共有N位数,序号从0-N-1。

第0位与第1位比较大小、交换顺序?数字大的放到右边。第1位与第2为比较大小、数字大的放右边,第3位与第4位比较大小、数字大的放到右边.....第N-2位与第N-1位比较大小、N-1位是最大值。

第0位与第1位比较大小、数字大的放右边......第N-3位与第N-2位比较大小、N-2位是最大值。


时空复杂度:

  • 时间复杂度:O(n^{2})

  • 空间复杂度:O(1)

实现:

补充:异或运算

不同为1相同为0 | 不进位相加

规则:

1)0^N = N   N^N = 0

2)满足结合律   (a^b)^c = a^(b^c)

3)满足交换律(……)^N  一堆数异或谁先谁后结果不变

例:

a = a^b

b = a^b

a = a^b

结果:a、b数值交换

设a=甲、b=乙

a = a^b    a = 甲^乙,b = 乙

b = a^b    b = 甲^乙^乙=甲,a = 甲^乙

a = a^b    a = 甲^乙^甲=乙,b=甲

注意:用这种方法交换两数,前提是a不等于b,否则结果会为抹为0(?这里的等于是程序上地址的相等?)

2、选择排序

原理:

0~N-1位找出最小值放到第0位。1~N-1找出最小值放到第1位。2~N-1找出最小值......

时空复杂度:

  • 时间复杂度:O(n^{2})

  • 空间复杂度:O(1)

实现:


3、插入排序

原理:

N为数组长度。

0~i做到有序(i=1~N-1),每0~i中,保证j=i-1,j>=0,j--,与j+1顺序正确。

时空复杂度:

  • 时间复杂度:O(n^{2})

  • 空间复杂度:O(1)

实现:


4、希尔排序


5、归并排序


6、快速排序


7、堆排序


8、计数排序


9、桶排序


10、基数排序

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值