黑马程序员技术交流社区
标题:
这是什么排序算法呀?高手速度求解释
[打印本页]
作者:
冯林
时间:
2012-3-14 21:10
标题:
这是什么排序算法呀?高手速度求解释
public class Sort {
private int [] a;
public void setA(int[] a) {
this.a = a;
}
private static int minArr(int[]a ,int x){
int min=a[x];
int p=x;
for(int y=x;y<a.length;y++){
if(min>a[y]){
min=a[y];
p=y;
}
}
return p;
}
public void arrSort(){
int k=0;
for(int i=0;i<a.length;i++){
int y= minArr(a,i);
if(y!=i){
int temp=a[i];
a[i]=a[y];
a[y]=temp;
k++;
System.out.println(k);
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int []a={5,3,2,6,4,9,7,0};
Sort sort=new Sort();
sort.setA(a);
sort.arrSort();
for(int x:a){
System.out.print(x);
}
System.out.println();
}
}
作者:
冯林
时间:
2012-3-14 21:52
人都去那了,没人来回答{:soso_e109:}
作者:
倪鹏博
时间:
2012-3-14 22:19
这是选择排序!
minArr(int[]a ,int x)是取数组a中a[x]之后的元素中的最小值!
int y= minArr(a,i);//取最小值
if(y!=i){ //判断最小值是不是当前元素a[y],不是的话把最小值和当前元素交换
int temp=a[i];
a[i]=a[y];
a[y]=temp;
作者:
冯林
时间:
2012-3-14 22:42
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1 ; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
}
}
}
}
与这个比较那个效率更高啊,为什么?{:soso_e132:}
作者:
冯林
时间:
2012-3-14 22:44
倪鹏博 发表于 2012-3-14 22:19
这是选择排序!
minArr(int[]a ,int x)是取数组a中a[x]之后的元素中的最小值!
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1 ; x++)
{
for(int y=x+1; y<arr.length; y++)
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
}
}
}
}
与这个比较那个效率更高啊,为什么?
作者:
倪鹏博
时间:
2012-3-14 22:49
个人认为,第一个要好一点!
首先,第一个用类实现的,且把实现部分封装起来了,比较规范!
其次,交换的步骤少了,相对要快一些!
作者:
OMG
时间:
2012-3-14 22:50
数组元素调换频繁,操作任务相对大,效率相对低;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2