让最大的元素到最后的位置,第二大的到到倒数第二个位置,依次重复,把所有的相邻元素都比较一次
首先我们需要将这三个方法写好:
package 冒泡排序;
/**
* @author ${范涛之}
* @Description
* @create 2021-11-04 18:44
*/
public class Bubble {
/**
* 对数组a中的元素进行排序
*/
public static void sort(Comparable[] a){
}
/**
* 比较元素是否大于w元素
*/
private static boolean greater(Comparable v,Comparable w){
return false;
}
/**
* 数组元素i和j交换位置
*/
private static void exch(Comparable[] a,int i,int j){
}
}
然后实现这三个方法,首先是先第一个比较v和w大小:
/**
* 比较元素是否大于w元素
*/
private static boolean greater(Comparable v,Comparable w){
return v.compareTo(w)>0;
}
然后数组i和j交换位置:
/**
* 数组元素i和j交换位置
*/
private static void exch(Comparable[] a,int i,int j){
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j]=temp;
}
然后写最一开始的对数组a进行排序
/**
* 对数组a中的元素进行排序
*/
public static void sort(Comparable[] a){
for (int i = a.length-1;i>0;i--) {
for (int j = 0; j <i; j++) {
// 比较索引j和索引j+1处的值
if (greater(a[j],a[j+1])){
exch(a,j,j+1);
}
}
}
}
编写测试类:
package 冒泡排序;
import java.util.Arrays;
/**
* @author ${范涛之}
* @Description
* @create 2021-11-04 18:57
*/
public class BubbleTest {
public static void main(String[] args) {
Integer[] arr = {4,5,6,2,8,7,9,3};
Bubble.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
涉及到的知识:Java compareTo() 方法
语法
public int compareTo( NumberSubClass referenceName )
参数
referenceName – 可以是一个 Byte, Double, Integer, Float, Long 或 Short 类型的参数。
返回值
-
如果指定的数与参数相等返回0。
-
如果指定的数小于参数返回 -1。
-
如果指定的数大于参数返回 1。
举例:
public class Test{
public static void main(String args[]){
Integer x = 5;
System.out.println(x.compareTo(3));
System.out.println(x.compareTo(5));
System.out.println(x.compareTo(8));
}
}
1
0
-1
插入排序
这个插入排序的原理就是我们假设一开始的第一个元素4是已经排序了的,然后后面的元素3是未排序的,所以我们要将未排序的元素3插入进去,我们需要遍历已排序的数组,记得是倒序,这样就可以放到正确的位置。
根据上面的API文档我们不难发现这个和冒泡排序很相似,我们一开始还是先将模板框架写好:
package 插入排序;
/**
* @author ${范涛之}
* @Description
* @create 2021-11-04 20:01
*/
public class Insertion {
/**
* 对数组a中的元素进行排序
*/
public static void sort(Comparable[] a){
}
/**
* 比较v元素是否大于w元素
*/
private static boolean greater(Comparable v,Comparable w){
return v.compareTo(w)>0;
}
/**
* 数组元素i和j交换位置
*/
private static void exch(Comparable[] a,int i,int j){
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j]=temp;
}
}
其中数组的交换位置和比较元素大小我们已经实现了
然后值得注意到的一点就是我们默认位置0的元素已经排好了,所以待排序的元素从索引1开始
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81072.html