美文网首页
排序算法---直接插入排序

排序算法---直接插入排序

作者: 明月倚深秋 | 来源:发表于2016-05-21 16:52 被阅读0次

//插入排序,把待排序的数组分为两部分,左边为已经有序的数组,右边为待排序的元素。然后不断的从右边取出元素放入左边已经排序好的数组中。

static NSArray * straightInsertionSort(NSArray *unsortedArr)

{

NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:unsortedArr];

/**  拿出每一个数  */

/**  默认0 位置为已经排序的区间,0--->n为没有排序的区间,所以直接从1位置开始拿出数据  */

for (int i = 1; i < sortedArray.count; i++)

{

/**  拿出当前位置的数a,和前一位置的数字b进行大小比较,如果a < b,就在0---->i - 1的区间内为a找一个合适的位置去存放  */

/**  当前位置数字a  */

int a = [sortedArray[i] intValue];

/**  前一位置数字b  */

int b = [sortedArray[i - 1] intValue];

/**  如果a < b,则继续让a与b的前一位数字比较  */

if (a < b)

{

/**  如果a < b,就在0---->i - 1的区间内为a找一个合适的位置去存放  */

/**  从后往前找位置,0--->i - 1  */

for (int j = i - 1; j >= 0; j --) {

/**  2,12,98,42,94,46,53,12  */

/**  取出前一位数字ca  */

int c = [sortedArray[j] intValue];

if (c <= a) {

/**  对a进行位置移动,从原来位置删除,移动到c后面一位  */

[sortedArray removeObjectAtIndex:i];

[sortedArray insertObject:NUM(a) atIndex:j + 1];

break;

}

}

}

}

return sortedArray;

}

相关文章

  • 排序算法(一)直接插入排序算法

    排序算法(一)直接插入排序算法 1.基本概念  直接插入排序(Straight-Insertion-Sort)是一...

  • 排序

    本文记录几个基础的排序算法。排序算法分为插入排序、交换排序、选择排序等几大类。 插入排序 1. 直接插入排序 O(...

  • 排序——插入排序

    业精于勤荒于嬉 插入排序包括:直接插入排序、折半插入排序、希尔排序(缩小增量排序) 一、直接插入排序 1. 算法思...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

  • 经典排序算法-希尔排序Shell sort

    一、希尔排序思想 希尔排序是基于插入排序的快速的排序算法,先分组后对每组进行直接插入排序,再分组再直接执行插入排序...

  • 【数据结构】【C#】013-插入类排序:🥇直接插入排序(稳定)

    插入排序:直接插入排序(稳定) 【 算法思想 】 直接插入排序是一种最基本的插入排序方法,其基本操作是将第 i 个...

  • Java学习记录(常用 算法 排序 )

    排序算法的分类如下: 1.插入排序(直接插入排序、折半插入排序、希尔排序);2.交换排序(冒泡泡排序、快速排序);...

  • 九种排序算法(重要!!)

    分类:(九种排序算法) 1、插入排序:直接插入排序、二分插入排序、希尔排序; 2、选择排序:简单选择排序、堆排序 ...

  • 算法-插入排序

    算 法:插入排序算法时间复杂度: 插入排序算法描述 插入排序伪代码 插入排序实现 插入排序算法概述 插入排...

  • 算法

    1.常用的八个基本排序算法 -前言:希尔排序和直接插入排序属于插入排序算法,简单选择排序和堆排序属于选择排序,冒泡...

网友评论

      本文标题:排序算法---直接插入排序

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