冒泡排序的结束条件是什么 冒泡排序的结束条件是什么 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class Fol{ public static void main(String[] args) { int[] a = {1,4,6,3,8,9}; for(int i = 4;i < 3;i++) { System.out.println(a[4]); } }}这个程序为什么不是输出8这个答案 for循环的判断语句有问题。循环体不被执行。 好奇怪的程序呀,for循环要干什么? 冒泡排序的结束条件是一次交换都没有发生,说明已经有序public static void bubbleSort(int[] a) { for (int i = a.length-1; i > 0; i--) { boolean isOrdered = true;//是否已经有序 for (int j = 0; j < i; j++) { if (a[j] > a[j+1])//左边的数大于右边的数,交换 { int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; isOrdered = false;//有交换,还不是有序 } } if (isOrdered)//说明一次交换都没有发生,已经有序 { return;//排序结束 } } } //结束条件:第i次循环没有数据交换class BubbleDemo{ public static void main(String [] args) { int [] a={6,5,4,3,2,1,7,8}; for(int i=0;i<a.length;i++) { boolean flag=false; //flag用于标记第i次循环是否存在数据交换 for(int j=0;j<a.length-1-i;j++) { if(a[j]>a[j+1]) { flag=true; int temp=0; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } if(!flag) //若第i次循环没有交换数据,则表示数组数据已经按从小到大排列好,不需再继续向下执行 break; } for(int i=0;i<a.length;i++) { System.out.print(a[i]+" "); } }} 最普通正常的写法,自己参考 int[] a = {4,64,2,4,74,645,7,65}; for(int i = a.length;i>0;i--) { for(int j = 0;j<i-1;j++) { if(a[j]>a[j+1]) { int test = a[j]; a[j] = a[j+1]; a[j+1] = test; } } } for(int i:a) System.out.print(i+" "); int[] a = {4,64,2,4,74,645,7,65}; for(int i = a.length;i>0;i--) { for(int j = 0;j<i-1;j++) { if(a[j]>a[j+1]) { int test = a[j]; a[j] = a[j+1]; a[j+1] = test; } } } for(int i:a) System.out.print(i+" "); 楼主是问循环如何结束么?for语句中的判断 这个程序对吗,i=4就不满足条件了小于3了,循环也就不执行了,还有int【】 a={}是什么意思呀~~~数组不应该是a【】吗 /** * 冒泡排序----交换排序的一种 * 方法:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。 * 性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4 * * @param data 要排序的数组 * @param sortType 排序类型 * @return */ public void bubbleSort(int[] data, String sortType) { if (sortType.equals("asc")) { //正排序,从小排到大 //比较的轮数 for (int i = 1; i < data.length; i++) { //将相邻两个数进行比较,较大的数往后冒泡 for (int j = 0; j < data.length - i; j++) { if (data[j] > data[j + 1]) { //交换相邻两个数 swap(data, j, j + 1); } } } } else if (sortType.equals("desc")) { //倒排序,从大排到小 //比较的轮数 for (int i = 1; i < data.length; i++) { //将相邻两个数进行比较,较大的数往后冒泡 for (int j = 0; j < data.length - i; j++) { if (data[j] < data[j + 1]) { //交换相邻两个数 swap(data, j, j + 1); } } } } else { System.out.println("您输入的排序类型错误!"); } printArray(data);//输出冒泡排序后的数组值 } instanceof的错误 Jbutton上面的text 不用HTML的话 怎么搞出换行效果? java中文件绝对路径错误 画连接线时的覆盖问题 java中如何将一个类中的变量传到另一个类中 JLabel.setText();调用后为什么没有在界面上显示出来 一道有趣的面试题 请各位大侠进来看看 如何判断获取的值是多少进制的? JTextArea输入中文问题 加密解密程序中遇到的困惑问题?含样例程序,求解决!谢了! 求救,java运行不了 使用HttpURLConnection 连接webService时,得到的内容中“<”变成了“<”中文变成误
{
public static void main(String[] args) {
int[] a = {1,4,6,3,8,9};
for(int i = 4;i < 3;i++) {
System.out.println(a[4]);
}
}
}
这个程序为什么不是输出8这个答案
public static void bubbleSort(int[] a)
{
for (int i = a.length-1; i > 0; i--)
{
boolean isOrdered = true;//是否已经有序
for (int j = 0; j < i; j++)
{
if (a[j] > a[j+1])//左边的数大于右边的数,交换
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
isOrdered = false;//有交换,还不是有序
}
}
if (isOrdered)//说明一次交换都没有发生,已经有序
{
return;//排序结束
}
}
}
//结束条件:第i次循环没有数据交换
class BubbleDemo
{
public static void main(String [] args)
{
int [] a={6,5,4,3,2,1,7,8};
for(int i=0;i<a.length;i++)
{
boolean flag=false; //flag用于标记第i次循环是否存在数据交换
for(int j=0;j<a.length-1-i;j++)
{
if(a[j]>a[j+1])
{
flag=true;
int temp=0;
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
if(!flag) //若第i次循环没有交换数据,则表示数组数据已经按从小到大排列好,不需再继续向下执行
break;
}
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
}
}
for(int i = a.length;i>0;i--) {
for(int j = 0;j<i-1;j++) {
if(a[j]>a[j+1]) {
int test = a[j];
a[j] = a[j+1];
a[j+1] = test;
}
}
}
for(int i:a)
System.out.print(i+" ");
for(int i = a.length;i>0;i--) {
for(int j = 0;j<i-1;j++) {
if(a[j]>a[j+1]) {
int test = a[j];
a[j] = a[j+1];
a[j+1] = test;
}
}
}
for(int i:a)
System.out.print(i+" ");
* 冒泡排序----交换排序的一种
* 方法:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。
* 性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4
*
* @param data 要排序的数组
* @param sortType 排序类型
* @return
*/
public void bubbleSort(int[] data, String sortType) {
if (sortType.equals("asc")) { //正排序,从小排到大
//比较的轮数
for (int i = 1; i < data.length; i++) {
//将相邻两个数进行比较,较大的数往后冒泡
for (int j = 0; j < data.length - i; j++) {
if (data[j] > data[j + 1]) {
//交换相邻两个数
swap(data, j, j + 1);
}
}
}
} else if (sortType.equals("desc")) { //倒排序,从大排到小
//比较的轮数
for (int i = 1; i < data.length; i++) {
//将相邻两个数进行比较,较大的数往后冒泡
for (int j = 0; j < data.length - i; j++) {
if (data[j] < data[j + 1]) {
//交换相邻两个数
swap(data, j, j + 1);
}
}
}
} else {
System.out.println("您输入的排序类型错误!");
}
printArray(data);//输出冒泡排序后的数组值
}