1、直接插入排序算法
源码:
package com.DiYiZhang;
/* 插入排序算法
* 如下进行的是插入,排序算法*/
public class InsertionSort {
public static void insertionSort(int[] a) {
int tmp;
for (int i = 1; i < a.length; i++) {
for (int j = i; j >0; j--) {
if (a[j] < a[j-1]) {
tmp = a[j-1];
a[j-1] = a[j];
a[j] = tmp;
}
}
// for(int j=i+1;j<a.length;j++){
// if(a[j]>a[j+1]){
// tmp=a[j+1];
// a[j+1]=a[j];
// a[j]=tmp;
// }
// }
}
}
public static void main(String[] args) {
int[] a = { 49, 38, 65, 97, 76, 13, 27, 50 };
insertionSort(a);
for (int i : a)
System.out.print(i + " ");
}
}
2、二分查找排序算法
源码:
package com.DiYiZhang;
import java.security.*;
import java.awt.dnd.*;
import java.awt.*;
import java.net.*;
import java.sql.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Arrays;
import java.util.Scanner;
/* 本程序用来将乱序的一组数字先按照二分查找的方式进行排序*/
public class MergeSort {
public static void main(String[] args) {
// Scanner reader=new Scanner(System.in);
// reader.hasNextLine();
int []a ={564,378,954,1255,684,57,15,389,687,45,98,125,348};
new MergeSort().MergeSort(a,0,a.length-1);
for(int i:a) {
System.out.print(i+" ");
}
}
public void MergeSort(int []a,int low,int high) {
int mid=0;
while(low<high) {
mid=low+(high-low)/2;
MergeSort(a,low,mid);
MergeSort(a,mid+1,high);
Merge(a,low,mid,high);
return;
}
}
private void Merge(int[] a, int low, int mid, int high) {
// TODO Auto-generated method stub
int i=low,j=mid+1,k=0;
int []b = new int[high-low+1];
while(i<=mid&&j<=high) {
if(a[i]<=a[j]) {
b[k++]=a[i++];
}else {
b[k++]=a[j++];
}
}
while(i<=mid) {
b[k++]=a[i++];
}
while(j<=high) {
b[k++]=a[j++];
}
for(int x=0,m=low;m<=high;m++) {
a[m]=b[x++];
}
}
}
3、直接排序算法
源码:
package com.DiYiZhang;
import java.util.Arrays;
public class SelectSort {
public static void selectSort(int[] a) {
if (a == null || a.length <= 0) {
return;
}
for (int i = 0; i < a.length; i++) {
//// int temp = a[i];
// int temp=i;
int flag = i; // 将当前下标定义为最小值下标
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[flag]) {// a[j] < temp 从小到大排序;a[j] > temp 从大到小排序
// temp = a[j];
flag = j; // 如果有小于当前最小值的关键字将此关键字的下标赋值给flag
}
}
if (flag != i) {
int temp=a[i];
a[i]=a[flag];
a[flag] = temp;
// a[i] = temp;
}
}
}
public static void main(String[] args) {
int a[] = { 49,38,65,97,76,13,27,49 };
System.out.println("交换之前的排序列表");
for(int i:a){
System.out.print(i+" ");
}
selectSort(a);
System.out.println("交换之后的排序列表");
System.out.println(Arrays.toString(a));
}
}
//class A{
// int sys(int a){
// int w=a;
// return w;
// }
//}
//public class InsertionSort{
// public static void insrtionSort(int []a){
// int tmp;
// for(int i=1;i<a.length;i++){
// for(int j=i;j>0;j--){
// if(a[j]<a[j-1]){
// tmp=a[j-1];
// a[j-1]=a[j];
// a[j]=tmp;
// }
// }
// }
// }
// public static void main(String [] args){
// int[]a={23,34,2,45,3,24,54,33};
// for(int i:a){
// System.out.println(i+" ");
// }
// }
//}