冒泡排序

//装载临时变量
int temp;
//记录是否发⽣了置换, 0 表示没有发⽣置换、 1 表示发⽣了置换
int isChange;
//外层循环是排序的趟数
for (int i = 0; i < arrays.length - 1; i++) {
//每⽐较⼀趟就重新初始化为0
isChange = 0;
//内层循环是当前趟数需要⽐较的次数
for (int j = 0; j < arrays.length - i - 1; j++) {
//前⼀位与后⼀位与前⼀位⽐较,如果前⼀位⽐后⼀位要⼤,那么交换
if (arrays[j] > arrays[j + 1]) {
temp = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = temp;
//如果进到这⾥⾯了,说明发⽣置换了
isChange = 1;
}
}
//如果⽐较完⼀趟没有发⽣置换,那么说明已经排好序了,不需要再执⾏下去了
if (isChange == 0) {
break;
}
}

时间复杂度O(n^2),空间复杂度O(1),稳定的排序

 

posted @ 2020-08-03 17:49  大同大不同  阅读(76)  评论(0)    收藏  举报