java排序 面试题_java面试题 排序算法 简单排序

package dateRank;

/*

*

* 数组排序的方法

* 1.选择排序(简单排序), 2,插入排序, 3,冒泡排序(非常普遍的) 4.归并排序 5.快速排序 6 希尔排序 7 堆排序

*

*

* 1.选择排序

* 选择排序是一种简单直观的排序算法!

*

*其基本的原,理如下:二层循环模式

*

* 数组 : a [38 ,65 ,97 ,76 ,13 ,27 ,49]

* 0 1 2 3 4 5 6

*

*

* 设第一个数为参照物 a{0} 38

* 比一圈后 13最小 为第

* 13 65 97 76 38 27 49

*

* 下一圈

* 13 27 97 76 38 65 49

*

* 下一圈

* 13 27 38 76 97 65 49

*

* 下一圈

* 13 27 38 65 97 76 49

*

* 13 27 38 49 65 76 97

*

*

*

*

*

* 13-27 , -97 , -----76 , -----38 , -----65 , -----49

* -----13 , -----27 , -----38 , -----76 , -----97 , -----65 , -----49

* 13 , 27 , 38 , 49 , 65 , 76 , 97 ,

*

* 对于给定的一组记录,经过第一轮比较后得到,最小的记录,然后,将该记录与第一次记录的位置

* 进行交换,接着,对不包括第一个记录以外的其他记录进行第二轮的比较。一直将数据循环得到

*/

public class SelectionSort {

public static void main(String[] args) {

//自定义一个数组

int a[]={38,65,97,76,13,27,49}; //(靶子)

//遍历循环数组

for(int i=0;i

System.out.print(a[i]+" ");

}

// 将数组重新赋值计算

selectSortMin(a);

/*selectSortMax(a);

//第二次遍历循环数组

System.out.println("--------------输出结果--------------");

for(int i=0;i

System.out.print(a[i]+" ");

}*/

}

// 数组简单排序算法

public static void selectSortMin(int[] a){

System.out.println("进入到selectSortMin()中:");

int i=0; //最外层赋值, 用于for 循环

int j=0; //最里层的一个初始值

int temp=0;//用于储存 最小值,临时数据 中间传递值 (中介值,用完了就作废了)

int flag=0;// 用于标记 最小值, 数组下标 中间临时标记下标

int n=a.length; //数组的长度

for(i=0;i

// 第一次遍历,就是将数组 每个值都遍历出来

System.out.println("第"+i+"次循环");

temp=a[i];//设这个临时值temp 为数组的初值

System.out.println("temp"+temp);

flag=i;

//循环一个周期 n次

for(j=i+1;j

if(a[j]

/*

* 如果 此数组a[j] 小于 这个临时值,将数组的值,赋值给临时值temp

* 将数组下标赋值给 flag

*/

temp=a[j];

flag=j; //记录最小值的坐标

System.out.println("j 数组下标:"+j);

}

}

System.out.println(a[i]);// 此时还没有进行变化。赋值操作

System.out.println("此时的I:"+i);

//如果标记的下标不等于数组应该的下标,则进行赋值操作

// 每次替换,只是和最小的值进行替换

// 最小值和循环数组值对调

if(flag!=i){

a[flag]=a[i];//将此时数组的值,替换成标记下标,将临时值赋值给当前数组下表

a[i]=temp;

}

for(int m=0;m

System.out.print("-----"+a[m]+" , ");

}

}

}

public static void selectSortMax(int[] a){

System.out.println("进入到selectSortMax()中:");

int i=0;

int j=0;

int temp=0;

int flag=0;

int n=a.length;

for(i=0;i

System.out.println("第"+i+"次循环");

temp=a[i];//设这个临时值temp 为数组的初值

flag=i;

//循环一个周期 n次

for(j=i+1;j

if(a[j]>temp){

/*

* 如果 此数组a[j] 小于 这个临时值,将数组的值,赋值给临时值temp

* 将数组下表赋值给 flag

*/

temp=a[j];

flag=j;

System.out.println("j"+j);

}

}

System.out.println(a[i]);

//如果标记的下标不等于数组应该的下标,则进行赋值操作

if(flag!=i){

System.out.println("数组 最小值 下标"+flag);

a[flag]=a[i];//将此时数组的值,替换成标记下标,将临时值赋值给当前数组下表

a[i]=temp;

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值