javaScript实现排序算法

本篇博客对js中常见的排序算法作了小结,方便日后的复习。主要为冒泡、选择、插入、快排、堆排、归并这六种排序方法


先贴一张时间复杂度
在这里插入图片描述

一、冒泡排序

  1. 平均时间复杂度O(n²)
  2. 双层for循环,两两比较相邻元素
function bubbleSort(arr) {
	let len = arr.length;
	for(let i = 0; i < len; i++) {
		for(let j = 0; j < len - 1 - i; j++) {
			if(arr[j] > arr[j + 1]) {
				// 可以使用tmp交换两个元素,也可以使用下面的es6解构赋值
				[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
			}
		}
	}
	return arr;
}

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、选择排序

  1. 最稳定的排序算法之一,因为无论什么数据进去都是O(n²)的时间复杂度
  2. 从没有排序的数组中,选择最小的元素放在第一位;再从余下元素中选择最小的元素放在第二位,以此类推。
  3. n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果
function selectSort(arr) {
	let len = arr.length;
	let minIndex, tmp;
	for(let i = 0; i < len - 1; i++) {
		minIndex = i;
		for(let j = i + 1; j < len; j++) {
			if(arr[j] < arr[minIndex]) {
				minIndex = j;
			}
		}
		// 将i位置放上最小的值
		tmp = arr[i];
		arr[i] = arr[minIndex];
		arr[minIndex] = tmp;
	}
	return arr;
}

3、插入排序

  1. 默认第一个元素已经排好序了,i从1 开始,不断与前面元素比较,如果i小,则将i元素保存,从i-1开始不断往前移动
function insertSort(arr) {
	let len = arr.length;
	for(let i = 1; i < len; i++) {
		if(arr[i] < arr[i-1]) {
			let tmp = arr[i];
			let p = i - 1;
			while(p >= 0 && tmp < arr[p]) {
				arr[p+1] = arr[p];
				p--;
			}
			arr[p+1] = tmp;
		}
	}
}

4、快速排序

  1. 在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较
  2. 采用分而治之思想,选基准:在数据结构中选择一个元素作为基准(pivot
    划分区:参照基准元素值的大小,划分无序区,所有小于基准元素的数据放入一个区间,所有大于基准元素的数据放入另一区间,分区操作结束后,基准元素所处的位置就是最终排序后它应该所处的位置
    递归:对初次划分出来的两个无序区间,递归调用第 1步和第 2步的算法,直到所有无序区间都只剩下一个元素为止。
function quickSort(arr) {
	if(arr.length <= 1) return arr;
	let len = arr.length;
	let povitIndex = Math.floor(len / 2);
	let povit = arr[povitIndex];
	let left = [], right = [];
	for(let i = 0; i < len; i++) {
		if(i !== povitIndex) {
			if(arr[i] <= povit) {
				left.push(arr[i]);
			}else{
				right.push(arr[i]);
			}
		}
	}
	return quickSort(left).concat(povit,quickSort(right));

}

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值