首页 > 其他分享 >JS排序:插入排序 冒泡排序 选择排序

JS排序:插入排序 冒泡排序 选择排序

时间:2023-06-14 17:58:37浏览次数:45  
标签:10 arr ++ 插入排序 冒泡排序 preIdx let 排序 minIdx

1.插入排序

 

 1     let arr = [30, 5, 7, 60, 22, 18, 29]
 2     let fn = arr => {
 3       for (let j = 1; j < arr.length; j++) {
 4         let current = arr[j]
 5         let preIdx = j - 1
 6         while (preIdx >= 0 && arr[preIdx] > current) {
 7           arr[preIdx + 1] = arr[preIdx]
 8           preIdx--
 9         }
10         arr[preIdx + 1] = current
11       }
12       return arr
13     }
14     console.log(fn(arr))

2·冒泡排序

 

 1 let arr2 = [30, 18, 8, 10, 60, 24, 3]
 2     let fn2 = arr => {
 3       for (let i = 0; i < arr.length; i++) {
 4         for (let j = 0; j < arr.length; j++) {
 5           if (arr[j] > arr[j + 1]) {
 6             let temp = arr[j + 1]
 7             arr[j + 1] = arr[j]
 8             arr[j] = temp
 9           }
10         }
11       }
12       return arr
13     }
14     console.log(fn2(arr2), '冒泡')

3·选择排序

 

 1 let arr3 = [30, 18, 8, 10, 60, 24, 3]
 2     let minIdx = 0
 3     let fn3 = arr => {
 4       for (let i = 0; i < arr.length - 1; i++) {
 5         minIdx = i
 6         for (let j = i + 1; j < arr.length; j++) {
 7           if (arr[j] < arr[minIdx]) {
 8             minIdx = j
 9           }
10         }
11         let temp = arr[i]
12         arr[i] = arr[minIdx]
13         arr[minIdx] = temp
14       }
15       return arr
16     }
17     console.log(fn3(arr3), '选择')

 

标签:10,arr,++,插入排序,冒泡排序,preIdx,let,排序,minIdx
From: https://www.cnblogs.com/xingnizhiren/p/17480968.html

相关文章

  • 快速排序以及 TopN 问题
    快速排序快速排序的划分函数1.firstelement划分2.medianofthreeelement划分快速排序的稳定性TopN问题Referencehttps://baobaobear.github.io/post/20191007-qsort-talk-1/......
  • C# 获取数组排序后的下标
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApp9{classProgram{staticvoidMain(string[]args){int[]src=newint[]{2,1......
  • 算法面试:单向链表节点的奇偶排序。
    给定一个单项链表,要求实现一个算法,把链表分成两部分,前一部分全是下标为偶数的节点,后一部分全是下标为奇数的节点,例如给定链表为下图的第一个队列,要求编写一个算法,将链表转换为第二个队列:要求算法不能分配多余的内存,同时,在操作链表是,不能更改节点内部的内容,只能更改节点的next指针......
  • 面试算法:波浪型数组的快速排序法
    波浪型数组是具备这样特性的数组,它的元素先是递增,到达某个点后开始低贱,接着达到某个点时又递增,接着右递减,以下数组就是一个波浪型数组:A:57,131,493,294,221,339,418,452,442,190A[0]A[1]A[2]A[3]A[4]A[5]A[6],A[7],A[8],A[9]不难发现,A[0]-A[4]是一个波浪,因为......
  • 考前复习——拓扑排序
    拓扑排序要解决的问题是给一个图的所有节点排序在一个DAG(有向无环图)中,我们将图中的顶点以线性方式进行排序,使得对于任何的顶点u到v的有向边(u,v),都可以有u在v的前面。注:有环的图无法给出拓扑排序因此也可以用这个性质判断图有无环intn,m;intin[N],out[N];/......
  • Java基本查找,二分查找,选择排序
    一、基本查找packagecom.itheima.d8_sort_binarysearch;/***基本查找*/importjava.util.Scanner;publicclassTest3{publicstaticvoidmain(String[]args){//1、定义一个数组(基本查找)int[]arr={12,95,1,3,76,4,2,93,56,49,67};......
  • java常见的排序算法(冒泡排序、选择排序、插入排序、shell排序、归并排序、堆排序、快
    (文章目录)本文简单的介绍了java常见的几种排序。所有的排序均是一个数组由小到大进行排序。一、冒泡排序1、效率表现和适用范围效率O(n²)适用于排序小列表2、算法实现publicvoidbubbleSortArray(int[]a){ intn=a.length; for(inti=1;i<n;i++){ fo......
  • c#排序算法
    1.没有一种排序算法是万能的最快算法,因为最快的排序算法取决于数据的性质和排序要求。然而,对于一般情况下的排序问题,以下算法通常被认为是最快的:快速排序(QuickSort):这是一种基于分治思想的常见排序算法。其平均时间复杂度为O(nlogn)。因为其平均情况下时间复杂度相对较快,加上......
  • 拓扑排序
    定义拓扑排序(Topologicalsorting)要解决的问题是给一个有向图的所有节点排序。这里直接使用OI-Wiki中举的例子来说明:我们可以拿大学选课的例子来描述这个过程,比如学习大学课程中有:单变量微积分,线性代数,离散数学概述,概率论与统计学概述,语言基础,算法导论,机器学习。当我们想要学习......
  • 算法题:冒泡排序
    functionbubbleSort($arr){$len=count($arr);//获取要排序数组的长度for($i=0;$i<$len;$i++){//外层循环遍历整个数组for($j=0;$j<$len-$i-1;$j++){//内层循环用于比较相邻元素,次数随外层循环进行而减少if(......