前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多语言-插入排序InsertSort

多语言-插入排序InsertSort

原创
作者头像
Wilbur-L
发布2022-05-07 14:24:35
4100
发布2022-05-07 14:24:35
举报
文章被收录于专栏:iOS底层原理iOS底层原理

一·算法思维

依旧假设有一段数组

代码语言:javascript
复制
[8,9,2,5,7,4,1,3,6]

也从基础的O(n^2)考虑

1.从i = 1开始索引的第二个位置对比前一个数组元素

代码语言:javascript
复制
for i = 1;i < array.count; i ++

2.拷贝一份当前数组[i]的元素

代码语言:javascript
复制
tempArr = array[i]

3.声明一个变量j保存合适插入的位置,因为这个j在第二层循环当中作初始化逻辑外部拿不到

代码语言:javascript
复制
NSInteger j; var j Int var j: Int //

4.如果当前tempArr比上一个array[j-1]要小

代码语言:javascript
复制
for j = i; j > 0 && array[j-1] > tempArr; j--
swap(arr[j],arr[j-1])

5.最后把交换过后的数组赋值给array

代码语言:javascript
复制
array[i] = tempArr;

二·语言实现

java

代码语言:java
复制
public class InsertSort {
    public static int[] Insert(int[] arr) {
        for (int i = 0;i < arr.length; i ++) {
            int tempArr = arr[i]; //这里有点疑问 为什么复制给tempArr的是arr[i] 是个Int类型
            int j;
            for (j = i; j > 0 && arr[j-1] < tempArr; j--) {
                arr[j] = arr[j-1];
            }
            arr[j] = tempArr;
        }
        return arr;
    }
}

golang

代码语言:go
复制
func InsertSort(arr []int) []int  {
	for i := 1;i < len(arr) ; i++ { //照旧的 遍历数组
		tempArr := arr[i]
		//寻找arr[j] 合适插入的位置
		var  j int
		for j = i; j > 0 && arr[j-1] > tempArr; j--  {
			arr[j] = arr[j-1]
		}
		arr[j] = tempArr
	}
	return arr
}

swift

代码语言:swift
复制
public func InserSort<T: Comparable>(_ array: [T]) -> [T] {
    var tempArr = array
    for i in 1..<array.count {
        var j = i
        while j > 0 && tempArr[j] < tempArr[j-1] {
            tempArr.swapAt(j-1, j)
            j -= 1
        }
    }
    return tempArr
}

OC

代码语言:objective-c
复制
+ (NSArray *)InsertSort:(NSArray *)array {
    NSMutableArray *arr = [[NSMutableArray alloc]initWithArray:array];
    for (NSInteger i = 1; i < array.count ; i++) {
        NSArray *temp = arr[i];
        NSInteger j;
        for (j = i; j > 0 && array[j - 1] > temp; j--) {
            arr[j] = arr[j-1];
        }
        arr[j] = temp;
    }
    return arr;
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一·算法思维
  • 二·语言实现
    • java
      • golang
        • swift
          • OC
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档