排序怎么就是不对,求指点

问题描述

这是我自己编写的排序的例题,自己怎么觉得都对但是结果就是不是自己期望的,求指点,非常感谢;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]);}}

这个也行

时间: 2024-08-27 03:13:54

排序怎么就是不对,求指点的相关文章

sql-两个表各自排序后再按权重合并后排序问题?求指点,谢谢

问题描述 两个表各自排序后再按权重合并后排序问题?求指点,谢谢 原需求:这是个仓库自动入库策略, 共6台堆垛机,同时入库工作,要求根据入库物料在各堆垛机的分布数量,平均分布入库,同时考虑堆垛机入库任务数和繁忙程度.(对物料分布查询的结果和堆垛机任务查询的结果分别作比重排序(例如物料分布排序1-6,堆垛机任务数量排序1-6,两者相加最后综合排序1-6)找出需要入库的堆垛机.)实现过程:1.先查询需要入库的物料在各堆垛机所在巷道的分布,找出各个巷道物料数从小到大排序:排序的结果如下:(这个是从表A中

c++-一道C++经典里例题,求指点求解答啊

问题描述 一道C++经典里例题,求指点求解答啊 解决方案 思路一: 每三个数代表一个三角形, 如果两个三角形索引相连, 必然共用一条边, 也就是说第二个三角形的起点值不会大于第一个三角形的最大值, 由此判断来划分三角形. (此思路赖于输入, 如果题目中的输入你要是输入[0, 1, 2, 3, 2, 0, 4, 5, 6], 那这思路就不对了) typedef unsigned int UINT; const int INDEX_NUM = 3; vector<UINT> indexArr; v

using-C++编译没错误,运行停止工作,菜鸟求指点

问题描述 C++编译没错误,运行停止工作,菜鸟求指点 #include #include using namespace std; int main() { string ch = ""; char*p=&ch[0]; cout <<"input cipher code:"; gets(p); cout <<"cipher code:"<<ch<<endl; int j=0; for(j=0

java-好多看不懂...求指点...

问题描述 好多看不懂...求指点... 程序应该没什么问题,可就是编译的时候就出现问题了,问题:内些错误到底怎么看呢?其实我还有很多看不懂...但还是请前辈们先帮我解决这两个问题吧...谢谢大家了啊!package mouse; import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.util.*;import javax.swing.*; public class MouseFrameText {

安卓,colordrawable不显示,求指点

问题描述 安卓,colordrawable不显示,求指点 代码 <ImageView android:id="@+id/imageview" android:layout_width="100dp" android:layout_height="100dp" /> imageView=(ImageView)super.findViewById(R.id.imageview); imageView.setBackground(0xff6

c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点

问题描述 c语言,形参是指针的引用,和形参是指针,两者结果不同,求指点 自定义的头文件 typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; 如下是使用形参是指针的引用的函数,结果是正确的 #include "BiTree.h" #include "stdlib.h" #include "stdio.h" bool Delete

代码-求指点JS记住密码功能问题

问题描述 求指点JS记住密码功能问题 调试一直出现问题,跪求大神们指点! 谢谢各位! JS代码: function setCookies(expiredays) { var exdata=new Data(); exdata.setDate(exdate.getDate()+expiredays); n_value=document.getElementById("username").value; p_value=document.getElementById("passw

继承-Objective-c重写问题,求指点

问题描述 Objective-c重写问题,求指点 oc中的重写是怎样的呢? 子类继承了父类,然后重写父类的方法,父类里的方法没有被覆盖掉啊 //这是第一个类 @interface Person : NSObject - (void)work; @end @inplementation Person - (void)work { NSLog(@"工作"); } //这是第二个类 @interface Student : Person @end @implementation Studen

post-OkHttp使用cookie登录后如何提交multipart/form-data,求指点

问题描述 OkHttp使用cookie登录后如何提交multipart/form-data,求指点 之前也失败了,尝试了各种方法,最后选择cookie,但是我在报头里添加了cookie, 然后post一份form-data数据怎么失败了,这是我的代码: 这是使用chrome查看发送的数据,属于request payload: 解决方案 Tomcat 下 JSP(enctype="multipart/form-data") post 提交时中文乱码解决方案