ios之冒泡排序
未優(yōu)化之前
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@12,@144,@14,@50,@58,@27,@65, nil];
int x = 0,y = 0;
//循環(huán)控制比較次數(shù)
for (int i = 0; i<arr.count-1; i++) {
//兩兩比較
for (int j = 0; j<arr.count-1; j++) {
//交換位置
if (arr[j]>arr[j+1]) {
id temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
x++; //記錄內(nèi)循環(huán)的次數(shù)
}
y++; //記錄外循環(huán)的次數(shù)
}
NSLog(@"記錄內(nèi)循環(huán)的次數(shù)%zd",x); //36
NSLog(@"記錄外循環(huán)的次數(shù)%zd",y); //6
NSLog(@"%@",arr);
優(yōu)化之后
NSMutableArray *arr = [NSMutableArray arrayWithObjects:@12,@144,@14,@50,@58,@27,@65, nil];
int x = 0,y = 0;
//循環(huán)控制比較次數(shù)
for (int i = 0; i<arr.count-1; i++) {
//為什么issort = true,不能寫在循環(huán)外面
//因為交換位置isSort = false,isSort的值永遠(yuǎn)是false,我們要檢測的是某一趟是否交換位置
BOOL isSort = true; //假設(shè)排序ok
//兩兩比較
for (int j = 0; j<arr.count-1; j++) {
//交換位置
//如果交換位置,說明沒有排序好,如果不交換位置,說明已經(jīng)排序好
if (arr[j]>arr[j+1]) {
isSort = false; //沒有排序好
id temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
x++; //記錄內(nèi)循環(huán)的次數(shù)
}
y++; //記錄外循環(huán)的次數(shù)
if (isSort) {//如果排序好了
break;
}
}
NSLog(@"記錄內(nèi)循環(huán)的次數(shù)%zd",x); //36 18
NSLog(@"記錄外循環(huán)的次數(shù)%zd",y); //6 4
NSLog(@"%@",arr);
前端冒泡排序(與上同理)
方式一:
var array = [12,144,14,50,58,27,65];
var x = 0;
var y = 0;
//循環(huán)控制比較次數(shù)
for(var i = 0;i< array.length-1;i++){
//兩兩比較
for(var j =0; j < array.length-1; j++){
//交換位置
if (array[j]> array[j+1]){
var tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
x++; //記錄內(nèi)循環(huán)的次數(shù)
}
y++; //記錄外循環(huán)的次數(shù)
}
console.log("記錄內(nèi)循環(huán)的次數(shù)"+x);
console.log("記錄外循環(huán)的次數(shù)"+y);
console.log(array);
方式二:
var array = [12,144,14,50,58,27,65];
var x = 0;
var y = 0;
//循環(huán)控制比較次數(shù)
for(var i = 0;i< array.length-1;i++){
//為什么issort = true,不能寫在循環(huán)外面
//因為交換位置isSort = false,isSort的值永遠(yuǎn)是false,我們要檢測的是某一趟是否交換位置
var isSort = true; //假設(shè)排序ok
//兩兩比較的次數(shù) 1--6 2--5 。。幢码。睛廊。
for(var j =0; j < array.length-1- i; j++){
//如果交換位置,說明沒有排序好,如果不交換位置,說明已經(jīng)排序好
if (array[j]> array[j+1]){
isSort = false; //沒有排序好
var tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
x++; //記錄內(nèi)循環(huán)的次數(shù)
}
y++; //記錄外循環(huán)的次數(shù)
if (isSort){
//如果排序好了
break;
}
}
console.log("記錄內(nèi)循環(huán)的次數(shù)"+x);
console.log("記錄外循環(huán)的次數(shù)"+y);
console.log(array);