不爱生姜不吃醋
如果本文有什么错误的话欢迎在评论区中指正
与其明天开始,不如现在行动!
本文内容是关于选择排序、冒泡排序、插入排序的,代码编写使用的是Java。
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
注:选择排序是不稳定的排序方法
O(n²)
import java.util.Arrays;
public class Example1 {
public static void main(String[] args) {
int[] arr = {5, 7, 2, 6, 4, 1, 3, 9, 8};
SelectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void SelectSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[i]) {
swap(arr, i, j);
}
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
O(n²)
import java.util.Arrays;
public class Example2 {
public static void main(String[] args) {
int[] arr = {5, 7, 2, 6, 4, 1, 3, 9, 8};
BubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void BubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j+1] > arr[j]) {
swap(arr, j+1, j);
}
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序
O(n²)
import java.util.Arrays;
public class Example3 {
public static void main(String[] args) {
int[] arr = {5, 7, 2, 6, 4, 1, 3, 9, 8};
InsertionSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void InsertionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 1; i < arr.length; i++) {
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
swap(arr, j, j + 1);
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
文章中代码的编写使用的都是Java基础知识,多加练习熟能生巧。
本文中若是有出现的错误请在评论区或者私信指出,我再进行改正优化,如果文章对你有所帮助,请给博主一个宝贵的三连,感谢大家!!!