C# 插入排序

插入排序,是循环遍历一个无序数组(例如有10个元素),把遍历出来的数值(第i个元素)插入到已经排过顺序的数组(这个有序数组有10-i个元素)中。

1.map

本文对一个循环分享的这么详细,相信看完你会有所收获。下面话不多说,来看看详细的介绍吧。

用一个 数组 举个例子:

有返回值,返回一个新的数组,每个元素为调用func的结果。

在ECMAScript5中,有三种 for 循环,分别是:

初始数组:1, 89, 4, 34, 56, 40, 59,
60, 39, 1, 40, 90, 48 

let list = [1, 2, 3, 4, 5];let other = list.map => { return d * 2;});console.log;// print: [2, 4, 6, 8, 10]

简单for循环 for-in forEach

第一次循环(i=0):1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90,
48 

2.filter

在2015年6月份发布的ECMAScript6中,新增了一种循环,是:

第二次循环(i=1):  1, 89, 4, 34, 56, 40, 59, 60, 39, 1, 40, 90,
48 

有返回值,返回一个符合func条件的元素数组

for-of

第三次循环(i=2):  1, 4, 89,
34, 56, 40, 59, 60, 39, 1, 40, 90, 48 

let list = [1, 2, 3, 4, 5];let other = list.filter => { return d % 2;});console.log;// print: [1, 3, 5]

下面我们就来看看这 4 种 for 循环。

第四次循环(i=3):1, 4, 34,
89, 56, 40, 59, 60, 39, 1, 40, 90,
48 

3.some

简单 for 循环

… …

返回一个boolean,判断是否有元素符合func条件,如果有一个元素符合func条件,则循环会终止。

下面先来看看大家最常见的一种写法:

第13次循环(i=12)(结束):1, 1,
4, 34, 39,
40, 40, 48,
56, 59, 60,
89, 90

let list = [1, 2, 3, 4, 5];list.some => { console.log; return d > 3;});// print: 1,0 2,1 3,2 4,3// return false
const arr = [1, 2, 3];for(let i = 0; i < arr.length; i++) { console.log;}
int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 };  // 输入一个数组
for (int i = 0; i < sort.Length; i++)
    {
         int temp = sort[i];   // 临时存储第i个数的值
         int j = i;

         for (; j > 0 && temp < sort[j - 1]; j--)  // 遍历有j 个数的有序数组(j从0开始),当 temp 临时值小于sort[j-1](初始是,有j个数,j-1 为最后一个数)时,把当前第(j-1)位上的数向后移一位(j)
              {
                  sort[j] = sort[j - 1];

              }
                sort[j] = temp;  // 退出循环后,把temp 放到 第j 个位置上(j 是经过循环处理后得到的)

    }
for (int i = 0; i < sort.Length; i++) // 输出
    {
         Console.Write(sort[i] + " ");
    }

4.every

当数组长度在循环过程中不会改变时,我们应将数组长度用变量存储起来,这样会获得更好的效率,下面是改进的写法:

 

返回一个boolean,判断每个元素是否符合func条件,有一个元素不满足func条件,则循环终止,返回false。

const arr = [1, 2, 3];for(let i = 0, len = arr.length; i < len; i++) { console.log;}
let list = [1, 2, 3, 4, 5];list.every => { console.log; return d < 3;});// print: 1,0 2,1 3,2// return false

for-in

5.forEach

通常情况下,我们可以用 for-in 来遍历一遍数组的内容,代码如下:

没有返回值,只针对每个元素调用func。

const arr = [1, 2, 3];let index;for { console.log("arr[" + index + "] = " + arr[index]);}

缺点:无法使用break,return等终止循环。

一般情况下,运行结果如下:

let list = [1, 2, 3, 4, 5];let other = [];list.forEach => { other.push;console.log;// print: [2, 4, 6, 8, 10]
arr[0] = 1arr[1] = 2arr[2] = 3

6.for in

但这么做往往会出现问题。

for-in循环实际是为循环”enumerable“对象而设计的,for
in也可以循环数组,但是不推荐这样使用,for–in是用来循环带有字符串key的对象的方法。

for-in 的真相

缺点:只能获得对象的键名,不能直接获取键值。

for-in 循环遍历的是对象的属性,而不是数组的索引。因此, for-in
遍历的对象便不局限于数组,还可以遍历对象。

var obj = {a:1, b:2, c:3};for  { console.log("obj." + prop + " = " + obj[prop]);}// print: "obj.a = 1" "obj.b = 2" "obj.c = 3"
const person = { fname: "san", lname: "zhang", age: 99};let info;for { console.log("person[" + info + "] = " + person[info]);}

person[fname] = sanperson[lname] = zhangperson[age] = 99

7.for of

需要注意的是, for-in
遍历属性的顺序并不确定,即输出的结果顺序与属性在对象中的顺序无关,也与属性的字母顺序无关,与其他任何顺序也无关。

for of为ES6提供,具有iterator接口,就可以用for
of循环遍历它的成员。也就是说,for
of循环内部调用的是数据结构的Symbol.iterator方法。

Array 的真相

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website