问题描述
这是我自己编写的排序的例题,自己怎么觉得都对但是结果就是不是自己期望的,求指点,非常感谢;packageqau.edu.variable;publicclassTest{publicstaticvoidmain(String[]args){int[]M={9,8,7,6,5,4,3,2,1};//声明一个数组进行赋值;intn=M.length;for(inti=0;i<=n-2;i++){//开始进行比较;i控制趟数;for(intj=0;j<=i;j++){//j控制第i趟比较中,位置j上的数字;if(M[i+1]<M[j]){//i+1位置的数字和i+1前面的数字进行比较inttemp=M[i+1];M[i+1]=M[i];M[i]=temp;}}}for(inti=0;i<=n-1;i++){System.out.print(M[i]+"t");}}}这是结果:876543219求指点
解决方案
解决方案二:
packageqau.edu.variable;publicclassTest{publicstaticvoidmain(String[]args){int[]M={9,8,7,6,5,4,3,2,1};//声明一个数组进行赋值;intn=M.length;for(inti=0;i<n-1;i++){//开始进行比较;i控制趟数;for(intj=0;j<n-1;j++){//j控制第i趟比较中,位置j上的数字;if(M[j+1]<M[j]){//i+1位置的数字和i+1前面的数字进行比较inttemp=M[j+1];M[j+1]=M[j];M[j]=temp;}}}for(inti=0;i<=n-1;i++){System.out.print(M[i]+"t");}}}
解决方案三:
这个是冒泡排序嘛,冒泡的精髓是两次for循环,但是很显然你的内层循环参数不对,应该是for(intj=i;j<=n-2;j++)内层循环要从i开始走,依次和后面的数进行比较
解决方案四:
上面的for(inti=0,i<=n-1,i++)下面的for(intj=0;j<=n-i;j++)
解决方案五:
if(M[i+1]<M[j]){//i+1位置的数字和i+1前面的数字进行比较inttemp=M[i+1];M[i+1]=M[j];M[j]=temp;}
其实lz交换的位置的时候写错了,i+1位置的数字和i+1前面的数字进行比较,那么i+1位置的数字如果比j位置的数字小的话就要调换位置。输出结果:123456789
解决方案六:
//标准冒泡排序算法,比较高效的。publicstaticvoidmain(String[]args){int[]numb=newint[]{3,42,57,1,32,24};intlen=numb.length;inti,j;inttemp;System.out.println("排序前的数组各个值:");for(i=0;i<len;i++){System.out.print(numb[i]+"t");}System.out.println("n");for(i=1;i<=len;i++){for(j=len-1;j>=1;j--){if(numb[j]>numb[j-1]){temp=numb[j];numb[j]=numb[j-1];numb[j-1]=temp;}}}System.out.println("排序后的数组各个值:");for(i=0;i<len;i++){System.out.print(numb[i]+"t");}}}
解决方案七:
int[]M={22,3,11,8,55,102,6};intlen=M.length;for(inti=0;i<len-1;i++){for(intj=0;j<len-i-1;j++){if(M[j]>M[j+1])M[j]=M[j+1]+0*(M[j+1]=M[j]);}}
解决方案八:
很佩服,不过还是写了个小东西分享一下...//java8运行.privatestaticvoidsortArrayList(intsize){List<Integer>list=newArrayList<Integer>(size+5);Randomrandom=newRandom();for(inti=0;i<=size;i++){list.add(random.nextInt(100));}list.sort(newComparator<Integer>(){@Overridepublicintcompare(Integero1,Integero2){returno1==o2?0:o1>o2?-1:1;}});list.forEach(System.out::println);}
解决方案九:
这是根据你的修改过来的,自己对比下哪里错了!还有就是排序的算法有很多种,冒泡排序只是其中之一,而且是比较差的算法!publicclassTest{publicstaticvoidmain(String[]args){int[]M={9,8,7,6,5,4,3,2,1};//声明一个数组进行赋值;intn=M.length;for(inti=0;i<=n-2;i++){//开始进行比较;i控制趟数;for(intj=0;j<n-i-1;j++){//j控制第i趟比较中,位置j上的数字;if(M[j+1]<M[j]){//i+1位置的数字和i+1前面的数字进行比较inttemp=M[j+1];M[j+1]=M[j];M[j]=temp;}}}for(inti=0;i<=n-1;i++){System.out.print(M[i]+"t");}}}
解决方案十:
引用6楼q75822144的回复:
int[]M={22,3,11,8,55,102,6};intlen=M.length;for(inti=0;i<len-1;i++){for(intj=0;j<len-i-1;j++){if(M[j]>M[j+1])M[j]=M[j+1]+0*(M[j+1]=M[j]);}}
这个也行