数据结构算法中排序有很多种,常见的、不常见的,至少包含十种以上。根据它们的特性,可以大致分为两种类型:比较类排序和非比较类排序
创新互联服务项目包括嵊州网站建设、嵊州网站制作、嵊州网页制作以及嵊州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,嵊州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到嵊州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
冒泡排序是一次比较两个元素,如果顺序是错误的就把它们交换过来。,直到不需要再交换
快速排序的基本思想是通过一趟排序,将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序
从数列中挑出一个元素,称为 “基准”(pivot);然后重新排序数列,所有元素比基准值小的摆放在基准前面、比基准值大的摆在基准的后面;在这个区分搞定之后,该基准就处于数列的中间位置;然后把小于基准值元素的子数列(left)和大于基准值元素的子数列(right)递归地调用 quick 方法排序完成,这就是快排的思路
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,从而达到排序的效果
插入排序的思路是基于数组本身进行调整的,首先循环遍历从 i 等于 1 开始,拿到当前的 current 的值,去和前面的值比较,如果前面的大于当前的值,就把前面的值和当前的那个值进行交换,通过这样不断循环达到了排序的目的
将最小的元素存放在序列的起始位置,再从剩余未排序元素中继续寻找最小元素,然后放到已排序的序列后面……以此类推,直到所有元素均排序完毕
堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质,即子结点的键值或索引总是小于(或者大于)它的父节点。堆的底层实际上就是一棵完全二叉树,可以用数组实现
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并
通过 mid 可以把该数组分成左右两个数组,分别对这两个进行递归调用排序方法,最后将两个数组按照顺序归并起来
本文实例讲述了JavaScript自定义数组排序方法。分享给大家供大家参考。具体分析如下:
Array中有自带的排序功能,这个使用起来比较方便,我们有一点必须清楚,就是排序的依据,如果sort不传入参数的话,那就是按照字符编码(Unicode编码)的顺序排序。
var
a=["3","2","1"];
console.log(a[0].charCodeAt(0));
//
51
console.log(a[1].charCodeAt(0));
//
50
console.log(a[2].charCodeAt(0));
//
49
console.log(a.sort());
//
["1",
"2",
"3"]
var
a=["3","你","他"];
console.log(a[0].charCodeAt(0));
//
51
console.log(a[1].charCodeAt(0));
//
20320
console.log(a[2].charCodeAt(0));
//
20182
console.log(a.sort());
//
["3",
"他",
"你"]
var
a=["3","11","222"];
console.log(a.sort());//
["11",
"222",
"3"]
//
多个字符的时候按照第一个字符的编码
不过我觉得sort最好用的地方在于可以自定义排序,这个在实际运用中也比较常见,比如要对对象数组排序。例如线面的一个对象数组,要根据其中的某一个字段进行排序,当然自己也可以写个函数来完成,不过我想没有sort来得方便。
var
list
=
[
{
max:3,
avg:2,
min:1
},
{
max:10,
avg:15,
min:20
},
{
max:8,
avg:5,
min:2
}
];
//
根据max字段对list对象进行排序,从小到大的顺序
//
x,y就是要比较的数组的单个元素,这里就是list中的一个元素
//
排序方法主要是要提供一个比较大小的规则,换句话说也就是要说明谁大谁小
//
返回值为true
or
false
function
sortByField(x,
y)
{
return
x.max
-
y.max;
}
console.log(list.sort(sortByField));
运行效果如下图所示:
希望本文所述对大家的javascript程序设计有所帮助。
html
body
script type="text/javascript"
function partition3way(arr)
{
var i,j,t,loc=0,len=arr.length;
for(i=1;ilen;i++)
{
if(arr[i]arr[loc])
{
t=arr[i];
for(j=i-1;j=0;j--)
{
arr[j+1]=arr[j];
}
loc++;
arr[0]=t;
}
else if(arr[loc]==arr[i])
{
t=arr[i];
for(j=i-1;j=loc+1;j--)
{
arr[j+1]=arr[j];
}
arr[loc+1]=t;
}
}
}
//var arr=[3,1,3,6,2,3,4,5];
var arr=[60,25,100,66,1,36,45,220,77,50,80,60,61,57,68,60,125,30,90,25,44,60];
partition3way(arr);
for(var index in arr)
{
document.write(arr[index]+" ");
}
/script
/body
/html
script language = "javascript"
function mysortfunc(str1,str2)
{
return eval(str1)-eval(str2);
}
function aa()
{
var x=new Array(document.form1.tb1.value,document.form1.tb2.value,document.form1.tb3.value,document.form1.tb4.value,document.form1.tb5.value,document.form1.tb6.value,document.form1.tb7.value,document.form1.tb8.value,document.form1.tb9.value,document.form1.tb10.value);
x.sort(mysortfunc);
document.write(x);
}
/script
form id="form1" name="form1" method="post" action=""
table width="200" border="0"
tr
tdlabel
input name="tb1" type="text" id="tb1" /
/label/td
/tr
tr
tdinput name="tb2" type="text" id="tb2" //td
/tr
tr
tdinput name="tb3" type="text" id="tb3" //td
/tr
tr
tdinput name="tb4" type="text" id="tb4" //td
/tr
tr
tdinput name="tb5" type="text" id="tb5" //td
/tr
tr
tdinput name="tb6" type="text" id="tb6" //td
/tr
tr
tdinput name="tb7" type="text" id="tb7" //td
/tr
tr
tdinput name="tb8" type="text" id="tb8" //td
/tr
tr
tdinput name="tb9" type="text" id="tb9" //td
/tr
tr
tdinput name="tb10" type="text" id="tb10" //td
/tr
tr
tdlabel
input type="button" name="Submit" value="按钮" onclick="aa()" /
/label/td
/tr
/table
/form