博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序
阅读量:5130 次
发布时间:2019-06-13

本文共 1951 字,大约阅读时间需要 6 分钟。

最近在整理一些基础的算法内容,冒泡排序是比较经典的排序方式,这里分别用C、OC和swift写了一下,如有不同意见,欢迎交流。

冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。

C语言版 

void bubble_sort(
int a[], 
int n);
//
函数声明
int array[
11] = {
23
8
90
12
7, -
9
54
3
36
99, -
17};
bubble_sort(array, 
11);
//
调用
void bubble_sort(
int a[], 
int n) {
    
for (
int i = 
0; i < n-
1; i++) {
//
遍历趟数
        
for (
int j = 
0; j < n-
1-i; j++) {
//
每趟比较的次数,这里-i是每一趟遍历完成之后都会确定一个较大数的位置 下次比较时不用再参与比较
            
if (a[j] > a[j+
1]) {
//
这里是从小到大排序,大值往上冒
                
int temp = a[j];
                a[j]     = a[j+
1];
                a[j+
1]   = temp;
            }
        }
    }
    
    printf(
"
bubble_sort:
");
    
for (
int i = 
0; i < n; i++) {
        printf(
"
 %d
", a[i]);
    }
    printf(
"
\n
");
    
//
bubble_sort: -17 -9 3 7 8 12 23 36 54 90 99
}

 

OC版

_dataArray = [NSMutableArray arrayWithObjects:@
21, @
3, @
34, @(-
28), @
10, @(-
33), @
54, @
9, @
0, @(-
2),  nil];
[self  bubbleSort];
//
调用
- (
void)bubbleSort {
    
for (
int i = 
0; i < self.dataArray.count - 
1; i++) {
        
for (
int j = 
0; j < self.dataArray.count - 
1 - i; j++) {
            
if ([self.dataArray[j] integerValue] > [self.dataArray[j+
1] integerValue]) {
                [self.dataArray exchangeObjectAtIndex:j withObjectAtIndex:(j+
1)];
            }
        }
    }
    
    NSString *
string = [self.dataArray componentsJoinedByString:
@"
 
"];
    NSLog(
@"
bubbleSort : %@
"
string);
    
//
bubbleSort : -33 -28 -2 0 3 9 10 21 34 54
}

 

swift版

var dataArray:NSMutableArray = [
76
1
19, -
4
2
4
6
8
0, -
19];
self.bubbleSort();
//
调用
func bubbleSort() {
    
for i:NSInteger 
in 
0 ..< dataArray.count-
1 {
//
顺便说一下,这里的i标示的是下标值,不要受OC的for in所影响
        
for j:NSInteger 
in 
0 ..< dataArray.count - 
1 - i {
            
if (dataArray.objectAtIndex(j).integerValue > dataArray.objectAtIndex(j+
1).integerValue) {
                 dataArray.exchangeObjectAtIndex(j, withObjectAtIndex: j+
1);
             }
         }
     }
        
     let 
string:NSString = dataArray.componentsJoinedByString(
"
 
");
     NSLog(
"
bubble sort: %@
"
string);
    
//
bubble sort: -19 -4 0 1 2 4 6 8 19 76
}

 

注: 排序有负数时,OC和swift对象需要转换成integerValue,swift中对象是不能比较大小的,如果不转换是不被允许进行比较的。OC比较过程中在遇到负数时,会取随机数,这样会影响排序

转载于:https://www.cnblogs.com/NINIiOS/p/5633975.html

你可能感兴趣的文章
字符串 “ ” 的方法
查看>>
Android初学第72天
查看>>
Fiddler抓包后保存为JMX(jmeter脚本,不限jmeter使用版本)
查看>>
[SimplePlayer] 3. 视频帧同步
查看>>
UVA 11027 - Palindromic Permutation
查看>>
Android LayoutInflater原理分析
查看>>
AS不能真机调试 (转)
查看>>
SQL SERVER代码生成器必备
查看>>
使用NET USE将USB端口模拟为LPT1
查看>>
二维数组和指向指针的指针
查看>>
BBS项目(四)
查看>>
IaaS,PaaS和SaaS
查看>>
中山纪念中学 培训 日记
查看>>
LeetCode "Best Meeting Point" !
查看>>
《实时控制软件设计》第四周作业
查看>>
Valid Word Abbreviation Leetcode
查看>>
SQL数据库 开启时出现 数据库连接错误2,error:40的问题。如何解决
查看>>
新阶段
查看>>
屏幕适配
查看>>
mysql使用索引优化查询效率
查看>>