java排序(选择排序+插入排序+冒泡排序+递归)
D:递归
----------------------------
代码演示:
package day06;
/**
* 选择排序
* 每次找出一个最小的值,放到最前面
* @author yw.wang
*
*/
public class Test12 {
public static void main(String[] args) {
Test12 t12 = new Test12();
t12.xz(); //选择排序
t12.cr(); //插入排序
t12.mp(); //冒泡排序
t12.dg(4); // 递归
System.out.println( t12.dg(4));
}
//选择排序,每次找出最小的值,放在最前面
public void xz(){
int x[] = {12,9,45,2,13,27,48,79,56,38};//对这一行数进行从小到大的排序
int min =0,t=0;//min代表最小的值,t表示最小的值的下标
for(int i=0;i<x.length;i++) //遍历x数组
{
min =x[i]; //认为第一个值是最小值
t=i;
for(int j=i+1;j<x.length;j++){
if(min>x[j]){
min = x[j];
t=j; //这样可以找出这一行最小的值
}
}
x[t]=x[i];
x[i]=min; //这样可以把每次找出来的值赋值给第一个
}
for (int i = 0; i < x.length; i++) {
System.out.print(x[i]+" ");
}
}
//-------------------------------------------
//插入排序
public void cr(){
int [] x = {12,9,45,2,13,27,48,79,56,38};
for(int i=1;i<x.length;i++){ //下标从1开始,默认不动第一个数,拿出第二个开始比较
int k =x[i];//要插入的数
int j=i-1;//记住位移之后的位置
//判断,如果当前的值大于插入的数,进行位移
while(j>=0&&x[j]>k){
x[j+1]=x[j];
j--;
}
x[j+1]=k;
}
for (int i = 0; i < x.length; i++) {
System.out.print(x[i]+" ");
}
System.out.println();
}
//---------------------------------------
//冒泡排序
public void mp(){
int x []={12,9,45,2,13,27,48,79,56,38};
int t =0;
for(int j=x.length-1;j>=0;j--){
for(int i=0;i<j;i++){
if(x[i] > x[i+1]){
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
}
}
}
for (int i = 0; i < x.length; i++) {
System.out.print(x[i]+" ");
}
}
//-------------------------------
//递归
public int dg(int n){
if(n ==0){
return 1;
}else{
return n*dg(n-1);//4*dg(3) 4!=4*3!
}
}
}