js算法(1)
2024-09-06 15:37:54
数组排序
arr.sort(
function
compare(a,b){
return
b.value-a.value});
json 排序
$.getJSON('URl',function(data){
data.sort(function(a,b){return a.demoname-b.demoname});
})
排序
1、冒泡排序
var arr = [1,4,2,6,8,5,1,3,4];
var temp ;
for (var i = 0; i < arr.length-1; i++){
for (var j = 0; j < arr.length-i-1 ; j++){
if (arr[j] > arr[j + 1]){
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
console.log(arr);
2、选择排序
var arr = [1,4,2,6,8,5,1,3,4];
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr);
var arr=[1,4,2,6,8,5,1,3,4];
var temp;
for(var i=0;i<arr.length-1;i++){
for(var j=arr.length-1;j>i;j--){
if(arr[j]<arr[i]){
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
console.log(arr);
3、快速排序
function quickSort(arr){
var len=arr.length;//获取arr的长度
if(len<=1){//如果arr的长度小于等于1则直接返回arr
return arr;
}
var pIndex=Math.floor(len/2);//获取基准点
7 var pivot=arr.splice(pIndex,1);//用splice方法获取基准点pivot=[arr[pIndex]],此时的arr为去除第pIndex项之后的剩余项;
var left=[];
var right=[];
for(var i=0; i<arr.length; i++){
if(arr[i]<pivot[0]){//如果小于基准点就放到数组l中
12 left.push(arr[i]);
}else{//如果大于等于基准点就放到右边数组中
right.push(arr[i]);
}
}
return quickSort(left).concat(pivot,quickSort(right));//递归不断重复整个过程
}
4、插入排序
function insertSort(arr){
var temp=null;//定义一个临时变量保存要插入元素的值
for(var i=1; i<arr.length; i++){//从索引位置1开始遍历数组
if(arr[i]<arr[i-1]){//只有要插入的元素小于已排好序的最大元素的时候才需要进行下面的操作
temp=arr[i];//把要插入的元素赋给一个临时变量
var p=i-1;//已排好序的数组的最后一项索引为i-1
while(temp<arr[p] && p>=0){//如果要插入的元素小于已排好序的元素并且没有到已排好数组的开始位置
arr[p+1]=arr[p];//把大于要插入元素(temp)的已排好序元素位置往后挪一位
p--;//从后往前便利已经排好序的元素
}
arr[p+1]=temp;//把要插入的元素插入到已排好序的数组中,索引位置为p+1
}
}
return arr;//返回已排好序的数组
}
#3快速排序es6改写
let quickSort = (arr) => {
if(arr.length <= ){
return arr;
}
let sortIndex = Math.floor(arr.length/),
leftArr = [],
rightArr = [],
base = arr[sortIndex];
arr.splice(sortIndex,);
//此处需要去除参照项,否则会出现Maximum call stack size exceeded 递归调用超出限制
//简单写法 base = arr.splice(sortIndex,1)[0]
for(let i = ;i < arr.length;i++){
if(arr[i] < base){
leftArr.push(arr[i])
}else{
rightArr.push(arr[i])
}
}
return quickSort(leftArr).concat(base,quickSort(rightArr))
} let testArr = [,,,,,,,]
let result = quickSort(testArr);
最新文章
- 10.JAVA之GUI编程弹出对话框Dialog
- 关于AJAX 的交互模型、交互流程及代码示范
- VR视频外包公司(长年承接虚拟全景外包、虚拟现实视频外包)
- 解析ASP.NET Mvc开发之查询数据实例
- google的glog的用法:
- JSON转换为数组 但读取JSON的顺序目前没法保证
- ubuntu navicat
- hdu 2064
- JSF 2 graphicImage example
- Html.Partial(";";)与Html.RenderPartial(";";)区别
- uva315(求割点数目)
- nginx、fastCGI、php-fpm关系梳理
- Java经典编程题50道之三十一
- MyDAL - .UpdateAsync() 之 .Set() 使用
- Centos 7 安装 ifconfig 管理命令
- Python_生成器函数进阶_39
- Android Studio Gradle Build Running 加速
- MySQL基础--字符函数
- coalesce :返回参数(列名)中第一个非NULL值的字段值
- .NET Core开发日志——Action
热门文章
- Linux配置redis开机启动(CentOS 7)
- 【C++】为什么INT_MIN不是直接写成-2147483648(转载)
- Idea创建maven项目 标签: idea 2016-12-28 21:51 605人阅读 评论(27) 收藏
- Redis 设置密码登录
- CAD安装失败怎样卸载重新安装CAD,解决CAD安装失败的方法总结
- SpringBoot @Transactional的rollbackFor属性
- MapReduce数据流-输出
- oracle函数 CHR(n1)
- python实现以立春为起点n为周期任意日期所在的日期区间
- php中 array_filter函数 的总结