您的位置:首页 > Web前端 > JavaScript

JavaScript 、Python Java、Go算法系列之【快速排序】篇

2017-06-12 00:00 573 查看
常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:





选择排序

选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。通俗来说就是你们中间谁最小谁就出列,站到队列的最后边,然后继续对着剩余的无序数组说你们中间谁最小谁就出列,站到队列的最后边,一直到最后一个,继续站到最后边,这样数组就有了顺序,从小到大。

1、算法步骤

a、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

b、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

c、重复第二步,直到所有元素均排序完毕。

2、动图演示





3、JavaScript 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
functionselectionSort(arr) {

var
len =arr.length;

var
minIndex,temp;

for
(
var
i =0;i <len -1;i++) {

minIndex = i;

for
(
var
j = i +1;j <len;j++) {

if
(arr[j] <arr[minIndex]) { 
// 寻找最小的数

minIndex = j; &nb
7fe0
sp;
// 将最小数的索引保存

}

}

temp =arr[i];

arr[i] = arr[minIndex];

arr[minIndex]= temp;

}

return
arr;

}

4、Python 代码实现

1
2
3
4
5
6
defselectionSort(arr):

for
i inrange(
len
(arr)
-
1
):

for
j inrange(i
+
1
,
len
(arr)):

if
arr[j] <arr[i]:

arr[i],arr[j] 
=
arr[j],arr[i]

return
arr

5、Java 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
publicstaticvoidselectSort(
int
[] numbers){

int
size = numbers.length;
//数组长度

int
temp =
0
;
//中间变量


for
(
int
i =
0
;i <size ;i++){

int
k = i;  
//待确定的位置

//选择出应该在第i个位置的数

for
(
int
j = size -
1
;j>i ;j--){

  
if
(numbers[j] <numbers[k]){

k = j;

  
}

}

//交换两个数

temp =numbers[i];

numbers[i] = numbers[k];

numbers[k] = temp;

 
}

}

6、Go 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
funcselectionSort(arr []int) []int {

length:=len(arr)

fori:=0;i <length-1;i++ {

min:= i

forj:= i + 1;j <length;j++ {

if
arr[min] >arr[j] {

min = j

}

}

arr[i],arr[min] = arr[min],arr[i]

}

return
arr

}

希望可以一起交流技术,有兴趣可以加qq邀请入群: 525331804 全栈技术开发qq群:581993430

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~



本文出自 “知乎技术” 博客,请务必保留此出处http://liuzhiying.blog.51cto.com/5850988/1925997
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: