//装载临时变量 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),稳定的排序
原文:https://www.cnblogs.com/ldhcsu/p/13427736.html