几种排序算法(冒泡排序算法,选择排序算法,快速排序算法,插入排序)
2016-01-09 15:44
555 查看
#import <Foundation/Foundation.h> void quick_sort(int s[], int l, int r); void InsertSort(int a[], int n); int main(int argc, const char * argv[]) { @autoreleasepool { NSArray *temp = @[@(5),@(4),@(3),@(2),@(1)]; NSMutableArray *old = [NSMutableArray arrayWithArray:temp]; //冒泡排序算法 for(int i=0;i<old.count-1;i++) { for(int j=0;j<old.count-i-1;j++) { if(old[j] > old[j+1]) { [old exchangeObjectAtIndex:j withObjectAtIndex:j+1]; } } } NSLog(@"%@",old); old = [NSMutableArray arrayWithArray:temp]; //选择排序算法 for(int i=0;i<old.count-1;i++) { for(int j=i+1;j<old.count;j++) { if(old[i] > old[j]) { [old exchangeObjectAtIndex:i withObjectAtIndex:j]; } } } NSLog(@"%@",old); //快速排序算法 int old2[5] = {5,4,3,2,1}; quick_sort(old2, 0, 4); for(int i=0;i<5;i++) printf("%d ",old2[i]); printf("\n"); //插入排序 int a[5] = {3,1,5,4,2}; InsertSort(a,5); for(int i=0;i<5;i++) printf("%d ",a[i]); } return 0; } //快速排序 void quick_sort(int s[], int left, int right) { if (left < right) { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = left, j = right, x = s[left]; while (i < j) { while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if(i < j) s[i++] = s[j]; while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if(i < j) s[j--] = s[i]; } s[i] = x; quick_sort(s, left, i - 1); // 递归调用 quick_sort(s, i + 1, right); } } //插入排序 void InsertSort(int a[], int n) { for(int i= 1; i<n; i++){ if(a[i] < a[i-1]){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入 int j= i-1; int x = a[i]; //复制为哨兵,即存储待排序元素 a[i] = a[i-1]; //先后移一个元素 while(x < a[j]){ //查找在有序表的插入位置 a[j+1] = a[j]; j--; //元素后移 } a[j+1] = x; //插入到正确位置 } } }
相关文章推荐
- 【HDU】 4722 Good Numbers
- Linux下最快速共享目录的方法
- xendesktop7.6默认自动映射终端打印机
- jquery页面刷新reload
- Mysql 变量讲解
- UVA-820 Internet Bandwidth (最大流)
- android基础学习002_android 创建图片副本和一些简单的特效
- 如何在客户端解析服务器传过来的xml文件
- 本地文件无法复制到远程桌面
- poj3468 A Simple Problem with Integers(Splay)
- SpringMVC入门实例及详细讲解 (一)
- 网络协议
- JVM参数最低标配说明
- java-拆包和装包简单分析
- LeetCode - Unique Binary Search Trees II
- 异步加载数据 jQuery $.getJSON
- 生活相关的30个定律
- IOS开发系列——Widget专题【整理】
- 2-2HDFS的架构
- 插补器Interpolator配图详解