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位是最大值。
时空复杂度:
-
时间复杂度:
-
空间复杂度:
实现:
补充:异或运算
不同为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找出最小值......
时空复杂度:
-
时间复杂度:
-
空间复杂度:
实现:
3、插入排序
原理:
N为数组长度。
0~i做到有序(i=1~N-1),每0~i中,保证j=i-1,j>=0,j--,与j+1顺序正确。
时空复杂度:
-
时间复杂度:
-
空间复杂度: