直接给代码块哈
最前面的就是给个测试的 大家都不用写了
粘贴就完了 正好也可以少打点代码
public class numsort {
/*选择排序 算法思想:选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,
接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。
*/
public static void main(String[] args) {
int[] m = {1, 2, 4, 3, 66, 7};
numsort.maopapsort(m);
for (int a = 0; a < m.length; a++) {
System.out.println(m[a]);
}
}
public static void swap(int[] arr, int a, int b) {
int m = arr[a];
arr[a] = arr[b];
arr[b] = m;
}
//关于选择排序法我还有一个地方不懂的是为什么 用一个元素进行交换 那交换完后原来i的位置上的元素怎么办呢
//虽然成功了 但是感觉还是有地方不是很理解
public static void choosesort(int[] arr) {
//这里因为最后一个元素不需要进行排序 可以减一
for (int i = 0; i < arr.length-1; i++) {
int ind = i;//用来记录最小的那个值的位置
for (int j = ind + 1; j < arr.length; j++) {
//遍历一遍数组
if (arr[j] < arr[ind]) {
ind = j;
}
swap(arr, ind, i);
}
}
}
/*插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,
把数组中其余n-1个数,根据数值的大小,插入到有序数组中,
直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!!!*/
//插入排序法就是假定前面的是一个已经排好了的数组,后面的就是慢慢往前面加
public static void chasort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int ind = i;
for (int j = ind - 1; j >= 0; j--) {
if (arr[j] > arr[ind]) {
ind = j;
}
}
swap(arr, ind, i);
}
}
public static void maopapsort(int[] arr) {
for (int j = 1; j< arr.length; j++) {
//此时arr[n-j,n]前面已经排好序了 后面
//通过冒泡在arr[n-j+1]的位置上来新排序
for (int i = 0; i <arr.length - j; i++) {
if (arr[i] > arr[i + 1]) {
int m=arr[i];
arr[i]=arr[i+1];
arr[i+1]=m;
}
}
}
}
//以上的排序都是基本的排序 要掌握其中的原理 其中的复杂度啥的也都不咋行
//下面的就是高级一点的排序
}