本文主要是介绍算法:选择排序,冒泡排序,插入排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
算法:选择排序,冒泡排序,插入排序
package com.Algorithm;
public class Demo03 {
public static void Demo1(int arr[]){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i] +" ");
}
}
//选择排序
public static void Demo2(int arr[]){
if(arr.length<2||arr==null){
return;
}
int N = arr.length;
for(int i = 0;i<N;i++){
//定义的最小值为i即每次选择的元素都与其余元素依次比较
int MinNub =i;
//遍历除i之外的其他数字
for(int j=i+1;j<N;j++){
//定义一个变量为最小的;通过三目运算符进行一次比较
MinNub = arr[MinNub] < arr[j] ? MinNub : j;
Demo3(arr,MinNub,j);
}
}
}
//插入排序
public static void Demo4(int arr[]){
if(arr.length<2||arr==null){
return;
}
//0~1;
//0~2;
int N = arr.length;
for(int end = 1;end<N;end++){
//判断出当前位置的数小于左边的数;则交换位置
while (arr[end]<arr[end-1]){
//交换值的大小
Demo3(arr,end,end-1);
//交换位置后进行下标索引向左移减一
end--;
}
}
}
//插入排序优化
public static void Demo5(int arr[]){
if(arr.length<2||arr==null){
return;
}
//0~1;
//0~2;
int N = arr.length;
for(int end = 1;end<N;end++){
//判断出当前位置的数小于左边的数;则交换位置
//pro是当前左边的位置;end(pro+1)是当前位置
//for(int pro = end -1;pro>=0&arr[pro]>arr[pro+1];pro--){
for(int pro = end -1;pro>=0&arr[pro]>arr[end];pro--){
Demo3(arr,end,end-1);
}
}
}
//冒泡排序
public static void Demo3( int arr[]){
if(arr.length<2||arr==null){
return;
}
int N = arr.length;
//冒泡排序,把大值放到后面小值放前面
//0~N-1进行排序(N-1除去本身)
for(int end = N-1;end>=0;end--){
for(int second = 1;second<=end;second++){
//比较这个数和前一个数
if(arr[second-1]>arr[second]){
Demo3(arr,second-1,second);
}
}
}
}
//此处只是单纯的值交换,不用考虑大小
public static void Demo3(int arr[],int i,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void main(String[] args) {
int arr []= {1,3,4,56,7,12,33,40};
Demo3(arr);
Demo1(arr);
}
}
这篇关于算法:选择排序,冒泡排序,插入排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!