Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说排序算法-冒泡排序和选择排序[通俗易懂],希望能够帮助你!!!。
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
排序算法比较基础,但是设计到很多计算机科学的想法,如下:
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
如果元素大小关系不正确,交换这两个数(在本例中为a> b),
比较一对相邻元素(a,b),
重复步骤1和2,直到我们到达数组的末尾(最后一对是第(N-2)和(N-1)项,因为我们的数组从零开始)
到目前为止,最大的元素将在最后的位置。 然后我们将N减少1,并重复步骤1,直到N = 1。
public static void bubbleSort(int array[]) {
int t = 0;
for (int i = 0; i < array.length - 1; i++){
for (int j = 0; j < array.length - 1 - i; j++){
if (array[j] > array[j + 1]) {
t = array[j];
array[j] = array[j + 1];
array[j + 1] = t;
}
}
}
}
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
在 [L ... N-1] 范围内找出最小项目 X 的位置,
用第 L 项交换X,
将下限 L 增加1并重复步骤1直到 L = N-2。
public static void selectionSort(int[] array) {
for (int i = 0; i < array.length; i++) {
int index = i;
for (int j = i; j < array.length; j++) {
if (array[j] < array[index])
index = j;
}
int temp = array[index];
array[index] = array[i];
array[i] = temp;
}
}