JS实现随机化快速排序的实例代码

JavaScript034

JS实现随机化快速排序的实例代码,第1张

算法的平均时间复杂度为O(nlogn)。但是当输入是已经排序的数组或几乎排好序的输入,时间复杂度却为O(n^2)。为解决这一问题并保证平均时间复杂度为O(nlogn)的方法是引入预处理步骤,它惟一的目的是改变元素的顺序使之随机排序。这种预处理步骤可在O(n)时间内运行。能够起到同样作用的另一种简单方法是在算法中引入一个随机元素,这可以通过随机地选择拆分元素的主元来实现。随机选择主元的结果放宽了关于输入元素的所有排列的可能性相同的步骤。引入这一步来修正原先的快速排序,可得到下面所示的随机化快速排序。新算法只是在区间[low…high]中一致随机地选择一个索引v,并将A[v]和A[low]交换,然后按照原来的快速排序算法继续。这里,parseInt(Math.random()*(high-low+1)

+

low)返回一个在low和high之间的数。

复制代码

代码如下:

/****************************************

算法:split

输入:数组A[low...high]

输出:

1.若有必要,输出按上述描述的重新排列的数组A

2.划分元素A[low]的新位置w

****************************************/

function

split(array,

low,

high)

{

var

i

=

low

var

x

=

array[low]

for(var

j

=

low

+

1

j

<=

high

j++)

{

if(array[j]

<=

x)

{

i

++

if(i

!=

j)

{

var

temp

=

array[i]

array[i]

=

array[j]

array[j]

=

temp

}

}

}

temp

=

array[low]

array[low]

=

array[i]

array[i]

=

temp

return

i

}

/****************************************

算法:rquicksort

输入:A[0...n-1]

输出:按非降序排列数组A[0...n-1]

rquicksort(A,

0,

n-1)

****************************************/

function

rquicksort(array,

low,

high)

{

if(low

<

high)

{

/******随机化拆分元素的主元*******/

var

v

=

parseInt(Math.random()*(high-low+1)

+

low)

var

tmp

=

array[low]

array[low]

=

array[v]

array[v]

=

tmp

/******随机化拆分元素的主元*******/

var

w

=

split(array,

low,

high)

rquicksort(array,

low,

w

-1)

rquicksort(array,

w

+1,

high)

return

array

}

}

var

array

=

[33,

22,

11,

88,

23,

32]

array

=

rquicksort(array,

0,

array.length-1)

console.log(array)

Slides

是一个简单的,容易定制和风格化,的jQuery幻灯片插件。

Slides提供褪色或幻灯片过渡效果,图像淡入淡出,图像预压,自动生成分页,循环,自动播放的自定义等很多选项。

用Slides插件,你可以随机播放幻灯片,设定那一套您想要开始幻灯片。它附带充分的说明和示例。

废话不多说了,直接给大家贴代码了

$(function(){

$("#slides").slidesjs({

play:

{

active:

true,

//

[boolean]

Generate

the

play

and

stop

buttons.

//

You

cannot

use

your

own

buttons.

Sorry.

effect:

"slide",

//

[string]

Can

be

either

"slide"

or

"fade".

interval:

,

//

[number]

Time

spent

on

each

slide

in

milliseconds.

auto:

false,

//

[boolean]

Start

playing

the

slideshow

on

load.

swap:

true,

//

[boolean]

show/hide

stop

and

play

buttons

pauseOnHover:

false,

//

[boolean]

pause

a

playing

slideshow

on

hover

restartDelay:

//

[number]

restart

delay

on

inactive

slideshow

}

})

})

前台:

<!doctype

html>

<head>

<style>

/*

Prevents

slides

from

flashing

*/

#slides

{

display:none

}

</style>

<script

src="http://code.jquery.com/jquery-latest.min.js"></script>

<script

src="jquery.slides.min.js"></script>

<script>

$(function(){

$("#slides").slidesjs({

width:

,

height:

})

})

</script>

</head>

<body>

<div

id="slides">

<img

src="http://placehold.it/x">

<img

src="http://placehold.it/x">

<img

src="http://placehold.it/x">

<img

src="http://placehold.it/x">

<img

src="http://placehold.it/x">

</div>

</body>

以上内容是关于jquery.slides.js的全部代码,希望大家喜欢。

本文实例为大家分享了JS隐藏号码中间4位的具体代码,供大家参考,具体内容如下

function

resetPhone(phone)

{

var

str

=

String(phone)

var

len

=

str.length

var

prev,next

if

(len

>=

7)

{

prev

=

str.slice(-len,-7)

next

=

str.slice(-3)

str

=

prev+"****"+next

}

else

if

(len

<

7

&&

len

>=

6)

{

prev

=

str.slice(-len,-4)

next

=

str.slice(-2)

str

=

prev

+

"**"

+

next

}

console.log(str)

return

str

}

上面可以正常使用,正则更加方便,但是如果中间连续重复数字有点小问题(如下面的正则方式)。

function

resetPhone(phone)

{

var

str

=

String(phone)

var

len

=

str.length

if

(len

>=

7)

{

var

reg

=

str.slice(-7,

-3)

return

str.replace(reg,

"****")

}

else

if

(len

<

7

&&

len

>=

6)

{

//1234567

var

reg

=

str.slice(-4,

-2)

return

str.replace(reg,

"**")

}

}

以上所述是小编给大家介绍的JS隐藏号码中间4位详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:JS中实现隐藏部分姓名或者电话号码的代码JS中input表单隐藏域及其使用方法JS实现“隐藏与显示”功能(多种方法)javascript点击按钮实现隐藏显示切换效果AngularJS实现元素显示和隐藏的几个案例JS实现鼠标点击展开或隐藏表格行的方法jquery和js实现对div的隐藏和显示方法js设置控件的隐藏与显示的两种方法js判断元素是否隐藏的方法javascript获取隐藏元素(display:none)的高度和宽度的方法