冒泡排序
- (void)bubbleSort {
NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"98",@"75",@"89",@"53",@"67",@"92"]];
for (int i = 0; i < array.count - 1; i++) {
for (int j = 0; j < array.count-1-i; j++) {
//原理:從第1個(gè)數(shù)開(kāi)始起,與后面的數(shù)字相互比較,滿足條件的向后位移(值交換),若不滿足條件,拿到大一點(diǎn)的數(shù)值繼續(xù)向后比較
if ([array[j] intValue] > [array[j+1] intValue]) {
// 開(kāi)始交換數(shù)據(jù)
NSString *temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
NSLog(@"%@",array);
}
}
選擇排序
// 選擇排序
- (void)selectSort {
NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"98",@"75",@"89",@"53",@"67",@"92"]];
for (int i = 0; i < array.count-1; i++) {
// 原理:從i后面第i+1個(gè)數(shù)起,跟array[i]相互比較,滿足條件即交換值
for (int j = i+1; j < array.count; j++) {
// if里面的 '>' '<' 條件決定了排序的 升降
if ([array[i] intValue] > [array[j] intValue]) {
NSString *temp = array[j];
array[j] = array[i];
array[i] = temp;
}
}
NSLog(@"%@",array);
}
}
二分法查找
概念
1.使用二分法好處: 可以加快尋找的效率。
2.使用二分法特點(diǎn): 二分法查找有序數(shù)組元素。
3.使用二分法思路:它是通過(guò)與數(shù)組的中間值進(jìn)行比較的。
/**
1.我們要查找的值為X
2.數(shù)組是從小到大排序的
**
1.先取出數(shù)組中間的元素
2.把中間元素和X進(jìn)行比較,如果中間元素大于X,那么X就位于第一個(gè)元素,和中間元素之間。反之,如果中間元素小于X,那么X就位于中間元素和最大值之間。
3.這樣進(jìn)行比較之后,我們的查找范圍就小了一半。
*/
#pragma mark - 實(shí)現(xiàn)代碼:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *arr = @[@1,@20,@30,@45,@50,@55,@60,@66,@70];
NSInteger x = 70,min,max,mid;
min = 0;
max = arr.count - 1;
mid = (min + max) / 2;
for (int i = 0; i < arr.count; i++)
{
if ([arr[mid] integerValue] == x)
{
NSLog(@"查找次數(shù)為--->%d次",i);
NSLog(@"尋找值位置為--->%ld",mid);
return;
}else if ([arr[mid] integerValue] > x)
{
max = mid - 1;
mid = (min + max) / 2;
}else if ([arr[mid] integerValue] < x)
{
min = mid + 1;
mid = (min + max) / 2;
}
}
}