一个int数组,有10个大大小小的数字,把他从小到大排出来。
方法:在没排序前,先找到数组里最小的一个数跟第一个数调换位置,在剩下在9个数字中在找到他们间最小的数又跟第一个调换位置依次类推,只到排完为止。
我要的就是以这种方法排序,我不知道怎么该怎么写,哪位能帮帮忙,谢谢!!!
最好能帮我写出来 不用冒泡发啊!!!! 老师说只用一个for就可以出来。
方法:在没排序前,先找到数组里最小的一个数跟第一个数调换位置,在剩下在9个数字中在找到他们间最小的数又跟第一个调换位置依次类推,只到排完为止。
我要的就是以这种方法排序,我不知道怎么该怎么写,哪位能帮帮忙,谢谢!!!
最好能帮我写出来 不用冒泡发啊!!!! 老师说只用一个for就可以出来。
int temp ;
for(int i= 0 ;i<a.length-1;i++)
{
for(int j=i+1 ;j<a.length;j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(int i = 0 ;i<a.length-1 ; i++)
{
System.out.println(a[i]);
}
似乎不大可能吧,还是说main方法只用一个for循环,别的循环不算啊,哈哈。
一个for的你们老师讲了以后记得来公布答案哈,这是你要的算法
public class sort {
int num[]={4,6,23,45,32,5,3,56,34,2};
//找剩下的最小数位置
public int findMin(int begin){
int key=num[begin];
int j=begin;
for(int i=begin;i<num.length;i++){
if(key>num[i]){
key=num[i];
j=i;
}
}
return j;
}
//互换位置
public void change(int begin,int key){
if(key!=begin){
int temp = num[begin];
num[begin]=num[key];
num[key]=temp;
}
}
//打印看看
public void pr(){
for(int i=0;i<num.length;i++){
System.out.print(num[i]+" ");
}
}
public sort() {
}
public static void main(String[] args){
sort s=new sort();
s.pr();
System.out.println();
for(int i=0;i<s.num.length;i++){
s.change(i,s.findMin(i));
}
s.pr();
}
}