插入排序
public class InsertionSort {
public static void sort(int data[]) {
for (int i = 1; i < data.length; i++) {
for (int j = i; j > 0; j--) {
if (data[j] < data[j - 1]) {
int temp = data[j];
data[j] = data[j - 1];
data[j - 1] = temp; } } } } }
抽象排序方法
public static void bubbleSort(int[] arr) {
int i, j, temp, len = arr.length;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
具体实现且行数最少
import java.util.Arrays;
public class BubbleSort {
public static void BubbleSort_Method(int[] arr) {
int temp;//定义一个临时变量
for(int i=0;i<arr.length-1;i++){//冒泡趟数
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;}}}}
public static void main(String[] args) {
int arr[] = new int[]{1,6,2,2,5,10,-1,20};
BubbleSort.BubbleSort_Method(arr);
System.out.println(Arrays.toString(arr));}}
时空复杂度
方法一
主函数中通过BubbleSort类带参数的构造函数执行冒泡排序
import java.util.Arrays;
/**
* 冒泡排序
* @author zsy
*
*/
public class BubbleSort {
public BubbleSort(int[] arr) {
int temp;//定义一个临时变量
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]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int arr[] = new int[]{1,6,2,2,5,10,-1,100};
BubbleSort bubble = new BubbleSort(arr);
//输出方法1
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
//输出方法2
System.out.println(Arrays.toString(arr));
}
}
方法二
主函数通过调用BubbleSort类的静态方法执行冒泡排序
import java.util.Arrays;
/**
* 冒泡排序
* @author zsy
*
*/
public class BubbleSort {
public static void BubbleSort_Method(int[] arr) {
int temp;//定义一个临时变量
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]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int arr[] = new int[]{1,6,2,2,5,10,-1};
BubbleSort.BubbleSort_Method(arr);
//输出方法1
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
//输出方法2
System.out.println(Arrays.toString(arr));
}
}
运行结果