插入排序算法
public class insert_sort {
public static void insert(int[] data){
System.out.println("开始排序:");
for(int i=1;i<data.length;i++){
int temp=data[i];
if(data[i]<data[i-1]){
int j=i-1;
for(;j>=0&&data[j]>temp;j--){
data[j+1]=data[j];
}
data[j+1]=temp;
}
System.out.println(java.util.Arrays.toString(data));
}
}
public static void main(String args[]){
int[] arr=new int[]{123,234,21,56,32,76,4,22};
System.out.println("pre sort:"+java.util.Arrays.toString(arr));
insert(arr);
System.out.println("post sort:"+java.util.Arrays.toString(arr));
}
}
二分插入排序
public class Binsert_sort {
public static void Binsert(int[] arr){
System.out.println("开始排序");
for(int i=1;i<arr.length;i++){
int low=0;//二分法最左端和最右端
int high=i-1;
int temp=arr[i];
while (low<=high){
int mid=(low+high)/2;//折半
if(temp<arr[mid]){
high=mid-1;
}
else{
low=mid+1;
}
}
// for(int j=i;j>high;j--){ //错误代码
// arr[j+1]=arr[j];
// }
// arr[high+1]=temp;
for (int j = i; j > low; j--) {
arr[j] = arr[j - 1];
}
arr[low] = temp;
System.out.println(java.util.Arrays.toString(arr));
}
}
public static void main(String[] args){
int[] arr=new int[]{9,2,4,6,12,65,7,21};
System.out.println("排序前"+java.util.Arrays.toString(arr));
Binsert(arr);
System.out.println("排序后"+java.util.Arrays.toString(arr));
}
}
最后插入部分自己写的代码有错误,将成功代码替换过来可以运行,暂时记录一下思考错误原因。
希尔排序
public class shellSort {
public static void shell(int[] a){
int h=a.length;
while(h!=0){
h=h/2;
for(int i=0;i<h;i++){
for(int j=i+h;j<a.length;j+=h){
int k=j-h;
int temp=a[j];
while (k>=0&&temp<a[k]){
a[k+h]=a[k];
k-=h;
}
a[k+h]=temp;
}
}
}
}
public static void main(String[] args){
int[] arr=new int[]{9,2,4,6,12,65,23,56,7,21,13};
System.out.println("排序前"+java.util.Arrays.toString(arr));
shell(arr);
System.out.println("排序后"+java.util.Arrays.toString(arr));
}
}
简单选择排序
public class selectSort {
public static void select(int a[]){
int min;
for(int i=0;i<a.length;i++){
min=a[i];
int position=i;
for(int j=i+1;j<a.length;j++){
if(a[j]<min){
min=a[j];
position=j;
}
}
a[position]=a[i];
a[i]=min;
}
}
public static void main(String[] args){
int[] arr=new int[]{9,2,4,6,12,65,23,56,7,21,13};
System.out.println("排序前"+java.util.Arrays.toString(arr));
select(arr);
System.out.println("排序后"+java.util.Arrays.toString(arr));
}
}
冒泡排序算法
public class pop_sort {
public static void main(String args[]){
int arr[]=new int[]{3,7,2,4,67,1,5};
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}