冒泡排序法:
主要思想:它是交换式排序算法的一种.将小的值"浮"到上面,将大的值"沈"到底部的一种排序方法.n个元素的排序将进行n-1轮循环,在每一轮排序中相邻的元素进行比较,如果左边的小于或等于右边的,将保持原位置不变,如果左边的大于右边的,将这两个右边的元素的位置交换.
稳定性:较为稳定
时间复杂度:O(n2)
import java.util.Arrays; class sorts { public static void main(String[] args) { int[] arr= new int[]{9,8,7,6,5,4,3,2,1,0}; //sorts.InsertSort(arr); sorts.quickSort(arr); } //直接插入排序法 public static int[] InsertSort(int[] arr) { int i,j; int insertNote;//要插入的数据 int[] array=arr; //从数组的第二个元素开始循环将数组中的元素插入 for (i=1;i<array.length;i++) { //设置数组中的第2个元素为第一次循环要播讲的数据 insertNote = array[i]; j=i-1; while(j>=0&&insertNote<array[j]) { //如果要播讲的元素小于第j个元素,就将第j个元素向后移动 array[j+1]=array[j]; j--; } //直到要插入的元素不小于第j个元素,将insertNote插入到数组中 array[j+1]=insertNote; } //打印排序后的数组 System.out.println(Arrays.toString(array)); return array; } //冒泡排序法 public static int[] quickSort(int[] arr) { int i,j,temp; int[] array=arr; //n个元素的数组进行n-1轮排序 for(i=0;i<array.length-1;i++) { //因为每一轮循环将确定一个数组元素的位置, //所以每一轮的比较次数将会递减 for(j=0;j<array.length-i-1;j++) { if(array[j]>array[j+1]) { //如果第j个元素比它后面的相邻的元素大的话就交换 temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } //打印出排序后的数组 System.out.println(Arrays.toString(array)); return array; } } |
时间: 2024-11-08 00:20:24