1
冒泡算法,对于我们来说是再熟悉不过啦,虽说在真正的开发过程中用之甚少,但对于求职面试,还是蛮有用的。
遂,笔者简单记录一下,增加不同语言的实现方法。
2
算法实现思想:
1、比较相邻的元素,若第一个比第二个大,就交换这两个元素的位置;
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,但除了最后一个元素;
3、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
时间复杂度:min = O(n),max =O(n^2);
算法稳定性:稳定,判断标准:相同值的两个元素不会更换位置;(将冒泡排序算法的稳定性转化为不稳定性的方式:array[j] < array[j+1]改为array[j] <= array[j+1])
3
C语言实现:(降序)
int algorithm(){
int array[] = {24, 17, 85, 13, 9, 54, 76, 45, 5, 63};
int count = sizeof(array)/sizeof(int);
for (int i = 0; i < count - 1; i ++) {
for (int j = 0; j < count - 1 - i; j ++) {
if (array[j] < array[j+1]) {
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
for (int index = 0; index < count; index ++) {
printf("%d", array[index]);
}
return 0;
}
4
Swift语言实现:(降序)
func testBubbling() {
//冒泡排序
var dataArray = [24, 17, 85, 13, 9, 54, 76, 45, 5, 63]
let count = dataArray.count
for i in 0..<count-1 {
for j in 0..<count-1-i {
print("i:\(i) j:\(j)")
if dataArray[j] < dataArray[j+1] {
let temp = dataArray[j]
dataArray[j] = dataArray[j+1]
dataArray[j+1] = temp
}
}
}
for index in 0..<count {
print("result:\(dataArray[index])")
}
}
5
Objective-C语言实现:(降序)
- (NSArray *)bubbleAlforithm:(NSArray *)array{
NSMutableArray *dataArray = [NSMutableArray arrayWithArray:array];
NSInteger count = dataArray.count;
for (int i = 0; i < count - 1; i ++) {
for (int j = 0; j < count - 1 - i; j ++) {
if (dataArray[j] < dataArray[j + 1]) {
id temp = dataArray[j];
[dataArray replaceObjectAtIndex:j withObject:dataArray[j+1]];
[dataArray replaceObjectAtIndex:j+1 withObject:temp];
}
}
}
return dataArray;
}
冒泡算法就先讲这些,希望能够给读者大人们带来一些帮助。
最后,感谢大家阅读,如有问题,欢迎大家留言!!!