本篇文章讲解的知识点主要围绕数组,废话不多说,只分享Java相关的干货!
冒泡排序
假设有 5 个数字 3,1,6,2,5 在一个 int 数组中,要求按从小到大排序输出如何采用冒泡排序算法呢?
冒泡排序的算法是这样的,首先从数组的最左边开始,取出第 0 号位置(左边)的数据和第1号位置(右边)的数据,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。接下来右移一个位置,取出第 1 个位置的数据和第 2 个位置的数据,进行比较,如果左边的数据大于右边的数据,则进行交换,否而不进行交换。沿着这个算法一直排序下去,最大的数就会冒出水面,这就是冒泡排序。
以上示例排序过程如下:
第一遍排序
从上面我们看到了比较了 N-1 次,那么第二遍就为 N-2 次比较了,如此类推,比较次数的公式如下:
(N-1) + (N-2)+...+1=((N-1)*N)/2
所以以上总共比较次数为((5-1)*5)/2=10
以上就是冒泡排序算法
-
public
class ArraySortTest01 {
-
-
public static void main(String[] args) {
-
-
int[] data = {
3,
1,
6,
2,
5};
-
for (
int i=data.length-
1; i>
0; i--)
-
{
for (
int j=
0; j<i; j++) {
-
if (data[j] > data[j+
1])
-
{
int temp = data[j];
-
data[j] = data[j+
1];
-
data[j+
1] = temp;
-
}
-
}
-
}
-
for (
int i=
0; i<data.length; i++)
-
{ System.out.println(data[i])
-
;
-
}
-
}
-
}
选择排序
选择排序对冒泡排序进行了改进,使交换次数减少,但比较次数仍然没有减少。
假设有 5 个数字 3,1,6,2,5 在一个 int 数组中,要求按从小到大排序输出采用选择排序,选择排序是这样的,先从左端开始,找到下标为 0 的元素,然后和后面的元素依次比较,如果找到了比下标 0 小的元素,那么再使用此元素,再接着依次比较,直到比较完成所有的元素,最后把最小的和第 0 个位置交换。
以上示例排序过程如下:
第一遍排序
第二遍排序将从下标为 1 的元素开始,以此类推,经过 N(N-1)/2 次比较,经过 N 次数据交互就完成了所有元素的排序。
【示例代码】
-
public
class ArraySortTest02 {
-
-
public static void main(String[] args) {
-
-
int[] data = {
3,
1,
6,
2,
5};
-
for (
int i=
0; i<data.length; i++)
-
{
int min = i;
-
for (
int j=i+
1; j<data.length; j++)
-
{
if (data[j] < data[min]) {
-
min = j;
-
}
-
}
-
//进行位置的交换
-
if (min != i) {
-
int temp = data[i];
-
data[i] = data[min];
-
data[min] = temp;
-
}
-
-
}
-
for (
int i=
0; i<data.length; i++)
-
{ System.out.println(data[i]);
-
}
-
}
-
}
以上就是数组相关的知识点了,配套视频教程👇,正在学习Java的同学们一定要持续关注哦~~
Java零基础进阶视频教程
转载:https://blog.csdn.net/bjpowernode_com/article/details/112311508