算法学习
算法名称 | 最差时间分析 | 平均时间复杂度 | 稳定度 | 空间复杂度 |
冒泡排序 | n2 | n2 | 稳定 | 1 |
插入排序 | n2 | n2 | 稳定 | 1 |
冒泡排序和插入排序整体在数据上基本一致,但是冒泡排序和插入排序的操作还是有较大的差异。
冒泡排序:
冒泡排序就好像士兵列队一样,从低到高排列,由第一个人去和其他人比较身高,遇见比他矮的就把这个人的位置占掉,这个矮的人就要出列,和他位置+1的人进行比较,如果他在遇见比他矮的人,那么占据这个人的位置,以此循环,直到那个最矮的人出现。
数组{9,3,6,8}
第一次{3,9,6,8} ①用9和3比较,9占据3三的位置,3占据9的位置;②3继续和6比较,3小于6,位置不变;③3再和8比较,3小于8,位置不变;总结:比较3次,交换1次;
第二次{3,6,9,8} ①用9和6比较,9占据6三的位置,6占据9的位置;②6继续和8比较,6小于8,位置不变;总结:比较2次,交换1次;
第二次{3,6,8,9} ①用9和8比较,9占据8三的位置,8占据9的位置;总结:比较1次,交换1次;
public void mpsort(int []arr){
for(int i = 1;i<arr[].length;i++){
for(int j=0 ;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
插入排序:
插入排序就好像士兵列队一样,从低到高排列,由第二个人和第一个人比较,第二个人比第一个人高,则位置不变,第三个人和第二个人比较、和第一个人比较,比第二个人小,比第一个人大则插入到第二个人位置。
public void crsort(int[] arr){
for(int i = 1;i<arr.length;1++){
int temp = arr[i];
for(int j = i-1;j>-1;j--){
while(arr[i]<arr[j]){
arr[j+1] = arr[j];
}
r[j+1] = temp;
}
}
}