用OC实现的冒泡排序、选择排序、矩阵相乘,纯粹是用来练习语法。

冒泡排序,程序如下:

void bubbleSort()
{
//初始化数组
NSMutableArray *array1 = [[NSMutableArray alloc] initWithCapacity:];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""]; NSInteger count = array1.count; for(int i = ; i < count; ++i){
for(int j = ; j < count - i - ; ++j){
NSInteger before = [[array1 objectAtIndex:j] integerValue];
NSInteger after = [[array1 objectAtIndex:j + ] integerValue];
if(before > after){
NSInteger temp = before;
[array1 setObject:[NSString stringWithFormat:@"%ld", after] atIndexedSubscript:j];
[array1 setObject:[NSString stringWithFormat:@"%ld",temp ] atIndexedSubscript:j + ];
}
}
} for(int i = ; i < count; ++i){
NSLog(@"%@",[array1 objectAtIndex:i]);
}
}

选择排序,程序如下:

void selectSort()
{
//初始化数组
NSMutableArray *array1 = [[NSMutableArray alloc] initWithCapacity:];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""];
[array1 addObject:@""]; NSInteger count = array1.count; for(int i = ; i < count - ; ++i){
NSInteger min = i;
for(int j = i + ; j < count; ++j){
NSInteger minNum = [[array1 objectAtIndex:min] integerValue];
NSInteger num = [[array1 objectAtIndex:j] integerValue];
if(minNum > num){
min = j;
}
}
NSInteger changeNum = [[array1 objectAtIndex:min] integerValue];
NSInteger temp = [[array1 objectAtIndex:i] integerValue];
[array1 setObject:[NSString stringWithFormat:@"%ld",changeNum] atIndexedSubscript:i];
[array1 setObject:[NSString stringWithFormat:@"%ld",temp] atIndexedSubscript:min];
} for(int i = ; i < count; ++i){
NSLog(@"%@",[array1 objectAtIndex:i]);
}
}

矩阵相乘,程序如下:

int main(int argc, const char * argv[]) {
@autoreleasepool { //bubbleSort();
//selectSort(); //矩阵相乘
//初始化矩阵1,矩阵1为:
// 1 0 2
// -1 3 1
NSMutableArray *array1 = [[NSMutableArray alloc] initWithCapacity:];
NSMutableArray *row1 = [[NSMutableArray alloc] initWithCapacity:];
NSMutableArray *row2 = [[NSMutableArray alloc] initWithCapacity:];
[row1 addObject:@""];
[row1 addObject:@""];
[row1 addObject:@""];
[row2 addObject:@"-1"];
[row2 addObject:@""];
[row2 addObject:@""];
[array1 addObject:row1];
[array1 addObject:row2];
//初始化矩阵2,矩阵2为
// 3 1
// 2 1
// 1 0
NSMutableArray *array2 = [[NSMutableArray alloc] initWithCapacity:];
NSMutableArray *newrow1 = [[NSMutableArray alloc] initWithCapacity:];
NSMutableArray *newrow2 = [[NSMutableArray alloc] initWithCapacity:];
NSMutableArray *newrow3 = [[NSMutableArray alloc] initWithCapacity:];
[newrow1 addObject:@""];
[newrow1 addObject:@""];
[newrow2 addObject:@""];
[newrow2 addObject:@""];
[newrow3 addObject:@""];
[newrow3 addObject:@""];
[array2 addObject:newrow1];
[array2 addObject:newrow2];
[array2 addObject:newrow3]; //第一个矩阵的行数
NSInteger numRow1 = array1.count;
//第一个矩阵的列数
NSArray *Col = [array1 objectAtIndex:];
NSInteger numCol1 = Col.count;
NSLog(@"numRow1 = %ld",numRow1);
NSLog(@"numCol1 = %ld",numCol1); //第二个矩阵的列
NSArray *Col2 = [array2 objectAtIndex:];
NSInteger numCol2 = Col2.count;
NSLog(@"numCol2 = %ld",numCol2); NSMutableArray *array3 = [[NSMutableArray alloc] initWithCapacity:numRow1];
//开始矩阵相乘
for(int i = ; i < numRow1; ++i){
NSMutableArray *temprow = [[NSMutableArray alloc] initWithCapacity:numCol2];
for(int j = ; j < numCol2; ++j){
NSInteger sum = ;
for(int k = ; k < numCol1; ++k){
NSInteger num1 = [[[array1 objectAtIndex:i] objectAtIndex:k] intValue];
NSInteger num2 = [[[array2 objectAtIndex:k] objectAtIndex:j] intValue];
sum = sum + (num1 * num2);
}
NSString *tempString = [NSString stringWithFormat:@"%ld",sum ];
[temprow addObject:tempString];
}
[array3 addObject:temprow];
}
for(int i = ; i < numRow1;++i){
for(int j = ; j < numCol2; ++j){
NSLog(@"%@",[[array3 objectAtIndex:i] objectAtIndex:j]);
}
}
}
return ;
}

ObjC语法练习 冒泡排序、选择排序、矩阵相乘的更多相关文章

  1. 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较

    2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...

  2. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

  3. C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

    C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 ...

  4. python算法(一)基本知识&冒泡排序&选择排序&插入排序

    本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...

  5. C语言实现 冒泡排序 选择排序 希尔排序

    // 冒泡排序 // 选择排序 // 希尔排序 // 快速排序 // 递归排序 // 堆排序 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h& ...

  6. 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现

    之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...

  7. php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序

    <?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){    $num=count($arr);    ...

  8. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  9. PHP冒泡排序,选择排序,插入排序

    1  冒泡排序是两个元素相互比较,找到最小值,然后冒泡到最后,代码如下:

随机推荐

  1. 列出man手册所有函数的方法

    locate /man7/|sed -r 's#.*/([^/]+).7.gz$#\1#' locate /man7/ | xargs basename -a -s '.7.gz' apropos - ...

  2. windows下使用远程工具登录虚拟机上的Linux、访问虚拟机上的服务 、端口转发、win7 telnet登陆虚拟机

    首先要清楚virtual box如何设置端口转发: 一篇文章: 如何使用VirtualBox进行端口转发 由于默认的方式是用NAT来做虚拟机网络的,因此如果从外网想访问虚拟机的应用会比较麻烦.以前一直 ...

  3. 深入研究Java类加载机制

    类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性 ...

  4. PHP array_chunk() 函数

    今天在CSDN上,看到了一个问题 一维数组 PHP code   array('0'=>'a',1=>'b',2=>'c',3=>'d',4=>'e',5=>'f' ...

  5. [ffmpeg 扩展第三方库编译系列] 关于 mingw32 下编译libcaca

    在编译前最好先看一下帮助 ./configure --help 开始编译 ./configure  --disable-shared --disable-cxx \ --disable-csharp ...

  6. [转] android自动化之MonkeyRunner测试环境配置(一)

    Android自动化测试之MonkeyRunner 一.Android自动化测试之环境搭建 1.1  Android-sdk介绍 ¢ SDK(Software development kit)软件开发 ...

  7. C++静态成员变量和静态成员函数小结

    静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员.和其他数据成员一样,静态数据成员也遵守pub ...

  8. cf A. Inna and Pink Pony(思维题)

    题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...

  9. Centos 下Nginx 自启动脚本

    #!/bin/bash #ckconfig: NGINX_PATH=/web/container/nginx- NGINX_COMMAND=$NGINX_PATH/sbin/nginx NGINX_P ...

  10. jquery通过ajax获取数据,控制显示的数据条数

    效果图: 现在我们可以先看它的json数据,如图所示:                然后可以对应我们的代码进行理解. jquery通过ajax获取数据,并通过窗口大小控制显示的数据条数,以及可以根据 ...