//冒泡排序简单版
public class Main {
public static void main(String[] args) {
int arr[]={3,9,-1,10,-2};
int temp;
for(int i=1;i<arr.length;i++){
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
//冒泡排序优化版
public class Main {
public static void main(String[] args) {
int arr[]={3,9,-1,10,-2};
int temp;
for(int i=1;i<arr.length;i++){
int flag=0;
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
}
}
if(flag==0)
break;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
//冒泡封装成方法
public class Main {
public static void maopao(int arr[]){
int temp;
for(int i=1;i<arr.length;i++){
int flag=0;
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
}
}
if(flag==0)
break;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int arr[]={3,9,-1,10,-2};
maopao(arr);
}
}
//速度测试:当80000个数冒泡排序要运行11s左右
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void maopao(int arr[]){
int temp;
for(int i=1;i<arr.length;i++){
int flag=0;
for(int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=1;
}
}
if(flag==0)
break;
}
}
public static void main(String[] args) {
int arr[]=new int[80000];
for(int i=0;i<80000;i++){
arr[i]=(int)(Math.random()*8000000);
}
Date data1=new Date();
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str =simpleDateFormat.format(data1);
System.out.println(date1Str);
maopao(arr);
Date date2=new Date();
String date2Str =simpleDateFormat.format(date2);
System.out.println(date2Str);
}
}
选择排序
//从小到大排序
public class Main {
public static void main(String[] args) {
int arr[]={101,34,119,1};
for(int i=0;i< arr.length-1;i++){
int min=arr[i];
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(min>arr[j]){
min=arr[j];
minIndex=j;
}
}
arr[minIndex]=arr[i];
arr[i]=min;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
//从大到小排序
public class Main {
public static void main(String[] args) {
int arr[]={101,34,119,1};
for(int i=0;i< arr.length-1;i++){
int min=arr[i];
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(min<arr[j]){
min=arr[j];
minIndex=j;
}
}
arr[minIndex]=arr[i];
arr[i]=min;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
//封装成方法
public class Main {
public static void xuanze(int arr[]){
for(int i=0;i< arr.length-1;i++){
int min=arr[i];
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(min>arr[j]){
min=arr[j];
minIndex=j;
}
}
arr[minIndex]=arr[i];
arr[i]=min;
}
}
public static void main(String[] args) {
int arr[]={3,5,1,9};
xuanze(arr);
}
}
//速度测试:当80000个数冒泡排序要运行3s左右
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void xuanze(int arr[]){
for(int i=0;i< arr.length-1;i++){
int min=arr[i];
int minIndex=i;
for(int j=i+1;j<arr.length;j++){
if(min>arr[j]){
min=arr[j];
minIndex=j;
}
}
arr[minIndex]=arr[i];
arr[i]=min;
}
}
public static void main(String[] args) {
int arr[]=new int[80000];
for(int i=0;i<80000;i++){
arr[i]=(int)(Math.random()*8000000);
}
Date data1=new Date();
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str =simpleDateFormat.format(data1);
System.out.println(date1Str);
xuanze(arr);
Date date2=new Date();
String date2Str =simpleDateFormat.format(date2);
System.out.println(date2Str);
}
}
插入排序
//插入排序抓扑克
//由小到大排序
public class Main {
public static void main(String[] args) {
int arr[]={101,34,119,1};
int arr1[]={101,0,0,0};
for(int i=1;i<arr.length;i++){
int j=i-1;
while(j>=0&&arr[i]<arr1[j]){
arr1[j+1]=arr1[j];
j--;
}
arr1[j+1]=arr[i];
}
for(int i=0;i<4;i++){
System.out.println(arr1[i]);
}
}
}
//大到小排序
public class Main {
public static void insertsort(int arr[]){
for(int i=1;i<arr.length;i++){
int j=i-1;
int val=arr[i];
while(j>=0&&val>arr[j]){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=val;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int arr[]={24,57,32,1,4};
insertsort(arr);
}
}
//速度测试:当80000个数冒泡排序要运行1s左右
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void insertsort(int arr[]){
for(int i=1;i<arr.length;i++){
int j=i-1;
int val=arr[i];
while(j>=0&&val<arr[j]){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=val;
}
}
public static void main(String[] args) {
int arr[]=new int[80000];
for(int i=0;i<80000;i++){
arr[i]=(int)(Math.random()*8000000);
}
Date data1=new Date();
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str =simpleDateFormat.format(data1);
System.out.println(date1Str);
insertsort(arr);
Date date2=new Date();
String date2Str =simpleDateFormat.format(date2);
System.out.println(date2Str);
}
}
希尔排序
//分组加冒泡
public class Main {
public static void shellsort(int arr[]){
int gap=arr.length/2;//步长
int temp=0;
while(gap>=1){
for(int i=gap;i<arr.length;i++){
for(int j=i-gap;j>=0;j-=gap){
if(arr[j]>arr[j+gap]){
temp=arr[j];
arr[j]=arr[j+gap];
arr[j+gap]=temp;
}
}
}
gap/=2;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void main(String[] args) {
int arr[]={8,9,1,7,2,3,5,4,6,0};
shellsort(arr);
}
}