美文网首页
常见排序

常见排序

作者: min_dou | 来源:发表于2019-04-26 09:44 被阅读0次

整理了常见的几种排序方法
(一)冒泡排序,它重复 遍历 要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

NSMutableArray *mAry = [NSMutableArray arrayWithObjects:@"11",@"10",@"15",@"0",@"234", nil];
for (int i = 0 ; i < mAry.count - 1; i++) {
    for (int j = 0; j < mAry.count - 1 - i; j++) {
        if ([mAry[j] intValue] > [mAry[j + 1] intValue]) {
            NSString *str = mAry[j];
            mAry[j] = mAry[j + 1];
            mAry[j + 1] = str;
        }
    }
}

NSLog(@"冒泡---%@",mAry);

(二选择排序)择排序基于一种简单的思路,每一次选择都选最小的直到把所有的数据都排完。

NSMutableArray *xzAry = [NSMutableArray arrayWithObjects:@"12",@"103",@"14",@"0",@"214", nil];
for (int i = 0 ; i<xzAry.count - 1; i++) {
for (int j = i + 1; j<xzAry.count; j++) {
if ([xzAry[i] intValue] > [xzAry[j] intValue]) {
NSString *str = xzAry[i];
xzAry[i] = xzAry[j];
xzAry[j] = str;
}
}
}
NSLog(@"选择排序---%@",xzAry);
(三 插入排序)如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。
与选择排序比较插入排序的一个优点是提前终止,不用遍历整个数组,因此,插入排序应该要比选择排序的效率更加的高效

NSMutableArray *crAry = [NSMutableArray arrayWithObjects:@"122",@"1",@"23",@"1",@"12", nil];
for (int i = 1; i < crAry.count; i++) {
    int j = i;
    int temp = [crAry[i] intValue];

    while (j > 0 && temp < [crAry[j - 1] intValue]) {
        crAry[j] = crAry[j-1];
        j--;
    }
    crAry[j] = [NSString stringWithFormat:@"%d",temp];
}

NSLog(@"插入排序---%@",crAry);

(四 .希尔排序)又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。

NSMutableArray *xeAry = [NSMutableArray arrayWithObjects:@"100",@"1",@"3123",@"1231",@"112",@"12",@"221",@"56",@"34", nil];
int gap = xeAry.count/2.0;
while (gap >= 1) {
for (int i = gap; i < xeAry.count; i++) {
int temp = [xeAry[i] intValue];
int j = i;
while (j >= gap && temp < [xeAry[j - gap] intValue]) {
xeAry[j] = xeAry[j - gap];
j-=gap;
}
xeAry[j] = [NSString stringWithFormat:@"%d",temp];
}
gap = gap/2;
}

NSLog(@"希尔排序---%@",xeAry);

相关文章

  • LeetCode大全

    1.常见排序算法: 常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、...

  • Python知识点:常见算法的python实现

    提到排序算法,常见的有如下几种:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、希尔排序;查找算法最常见...

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 常见排序的java实现

    常见排序的java实现 常见排序java实现 插入排序(二分插入排序) 希尔排序 快速排序(三数中值快排) 冒泡排...

  • IOS常见算法

    常见算法: 快速排序: 选择排序: 冒泡排序: 测试代码:

  • 排序算法

    常见的排序算法 常见的排序算法有:插入、希尔、选择、冒泡、归并、快速、堆排序。。。 插入排序 算法步骤一、从数组的...

  • 常见的10种排序算法与C#实现

    常见的排序算法——常见的10种排序[https://www.cnblogs.com/flyingdreams/p/...

  • 排序

    排序是实际运用中比较常见的情况。计算机界也对排序进行了很深入的研究。常见的排序算法有:快速排序、归并排序、插入排序...

  • 排序算法

    排序算法 冒泡排序 选择排序 插入排序 快速排序(最常见) 希尔排序 归并排序 源码:Sorting 冒泡排序 冒...

  • 记录几个常见的排序算法

    常见的排序有:快速排序、冒泡排序、希尔排序、选择排序、插入排序、归并排序 冒泡排序: 插入排序: 选择排序: 希尔...

网友评论

      本文标题:常见排序

      本文链接:https://www.haomeiwen.com/subject/awsagqtx.html