您的位置:首页 > 其它

【排序算法】图解算法——用眼睛学习算法

2017-05-21 22:20 162 查看
大家都知道的排序算法大概有冒泡排序、选择排序、快速排序这几种。

分享一种加深对算法理解的方法,看算法的实现过程结合算法的本质思想来理解算法,可以达到手写算法的实现效果。

冒泡排序(Bubble Sort)

先来一起看一下经典排序算法冒泡排序,冒泡排序(Bubble Sort),首先看实现过程:



可以看到整个过程是一直在做元素交换,到达将较大的元素排到队列右边的目标。

下面给出一个 java 的实现

//冒泡排序
private static void f3(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length-1; j++) {
//将整个队列中相邻的元素做比较,将较小的元素和较大的元素交换位置
if(arr[j+1] < arr[j]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}


选择排序(Selection sort)

再来看一下选择排序算法,这个算法从名字可以看出来的意思是从序列中选择出最小的数放在队列头,或者将最大的数放在队列尾也是一样的道理。

先给出一个 java 的实现

//选择排序
private static void f2(int[] arr) {
int min ,pos;//min保存未排序序列中最小值,pos记录未排序序列中最小值的下标
for (int i = 0; i < arr.length; i++) {
min = arr[i];
pos = i;
for (int j = i+1; j < arr.length; j++) {
//每次遍历未排序序列和当前最小值对比
if(arr[j] < min){
min = arr[j];
pos = j;
}
}
//将未排序序列中最小的值丢到已排序序列队尾
int temp = arr[i];
arr[i] = min;
arr[pos] = temp;
}
}


然后我们一起来看看图解选择排序



使用这种方式来学习算法,无论是理解成本还是理解一个算法的深度我相信会比看文字描述来得好。

图解算法的网站:https://visualgo.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐