1.冒泡排序
比较相邻的元素,如果第一个比第二个大,就交换它们两个;
对每一对相邻元素做同样的工作,这样最后的元素一定为最大的数;
针对所有的元素重复以上步骤,除了最后一个,直到排序完成。
void bubbleSort(int arr[]){
int len=arr.length;
for(int i=0;i<len-1;i++){
boolean time=true;
for(int j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
time=false;
}
}
if(time)break;
}
}
时间复杂度:
最坏要比较n-1次:O(n^2)
最好1次:O(n)
平均:O(n^2)
稳定性:稳定排序。
2.循环队列
用于解决假溢出:队列里有空间但是队尾指针已到数组上界,不能再有入队操作。
空队和队满时均有front=rear 易出现二义性 一般用空闲单元法解决:人为浪费一个单元,令队满特征为front=(rear+1)%N
队列长度l=(N+rear-front)%N;