冒泡排序加强版!!!!也请大神给看看。。别见笑。
本帖最后由 mimiwuqi 于 2017-12-20 23:28 编辑学了冒泡排序,感觉很好玩,就把前面学得初级知识组合在一起,算是个加强版的冒泡排序小程序吧。
我也是小白,刚起步,大家一起来学习。大神不要见笑啊{:1_893:}:Dweeqw。
注意,都是int类型的,只能对int类型的进行排序。
程序好像有点问题,当降序排完之后,再升序排就排不出来了。看来想法是好的,结果不是想要的。。。。。
我再找找问题所在,大神也帮帮我,谢谢,见笑了。
以下是代码:
import java.util.*;
public class order{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
for(;;){
System.out.println("你要输入多少数字进行排序:");
int num=in.nextInt();
int a[]=new int;
for(int i=0;i<a.length;i++){
System.out.println("输入第"+(i+1)+"个数。");
a=in.nextInt();
}
for(;;){
System.out.println("你想要什么排序?输入1为降序排序,2为升序排序。");
int select=in.nextInt();
switch(select){
case 1:
for(int i=0;i<a.length-1;i++){
for(int j=a.length-1;j>0;j--){
if(a>a){
int t=a;
a=a;
a=t;
}
}
}break;
case 2:
for(int i=0;i<a.length-1;i++){
for(int j=0;j>a.length-1;j++){
if(a>a){
int t=a;
a=a;
a=t;
}
}
}break;
}
System.out.println("排好的顺序为:");
for(int i=0;i<a.length;i++){
System.out.println(a); //编辑的时候能看到下标啊,怎么发出帖子后数组下标没了???应该是a
}
System.out.println("还要看看另一种排序吗?想,输入y,否则n退出。");
String other=in.next();
if(other.equals("y")){
System.out.println("咱们继续。");
}else{
break;
}
}
System.out.println("想要重新输入一组数来排序吗?想,输入y,否则n退出。");
String other=in.next();
if(other.equals("y")){
System.out.println("好的继续。");
}else{
break;
}
}
}
} 本帖最后由 jxh 于 2017-12-22 10:18 编辑
//package tank;
import java.util.*;
public class Start{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("你要输入多少数字进行排序:");
int num=in.nextInt();
int [] a=new int;//创建一个数组
for(int i=0;i<a.length;i++){
System.out.println("输入第"+(i+1)+"个数。");
a=in.nextInt();
}
for(;;){
System.out.println("你想要什么排序?输入1为降序排序,2为升序排序。");
int select=in.nextInt();
switch(select){
case 1:
for(int i=0;i<a.length-1;i++){ //降序排列
for(int j=a.length-1;j>0;j--){
if(a>a){
int t=a;
a=a;
a=t;
}
}
}
break;
case 2:
for(int i=0;i<a.length-1;i++){ //升序排列
for(int j=a.length-1;j>0;j--){
if(a<a){
int t=a;
a=a;
a=t;
}
}
}
break;
}
System.out.println("排好的顺序为:");
// for(int i=0;i<a.length;i++){
// System.out.println(a);
// }
//使用foreach 遍历数组
// for(元素类型t 元素变量x : 遍历对象obj){
// 引用了x的java语句;
// }
for (int i : a) {
System.out.println(i);//逐个输出数组元素的值
}
System.out.println("还要看看另一种排序吗?想,输入y,否则n退出。");
String other=in.next();
if(other.equals("y")){
continue;//使用关键字 返回到 for循环开头
}else{
break;//跳出for循环
}
}//外层 for End
}
}
改好了 应该没有BUG麻烦评分一下 给点CB package 排序;
import java.util.*;
public class Start {
public static void main(String[] args) {
String other;
Scanner in = new Scanner(System.in);
System.out.println("你要输入多少数字进行排序:");
int num = in.nextInt();
int[] a = new int;
for (int i = 0; i < a.length; i++) {
System.out.println("输入第" + (i + 1) + "个数:");
a = in.nextInt();
}
Start s = new Start();
a = s.num3(a);
System.out.println("你想要什么排序?输入1为降序排序,2为升序排序。");
int select = in.nextInt();
do {
switch (select) {
case 2:
System.out.print("升序排序:");
for (int i = 0; i < a.length; i++) {
System.out.print(a + " ");
}
System.out.println("");
break;
case 1:
System.out.print("降序排序:");
for (int i = a.length; i > 0; i--) {
System.out.print(a + " ");
}
System.out.println("");
break;
}
System.out.println("还要看看另一种排序吗?想,输入任意键,n退出。");
other = in.next();
if (select==1) {
select=2;
}else{
select=1;
}
} while (!other.equals("n"));
System.out.println("结束!");
}
// 1.第一种冒泡排序
public int[] num1(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1; j++) {
// 比较大小移位
if (a > a) {
int temp = a;
a = a;
a = temp;
}
}
}
return a;
}
// 2.数组的选择排序
public int[] num2(int[] a) {
for (int i = 1; i < a.length; i++) {
int index = 0;
for (int j = 1; j <= a.length - i; j++) {
if (a > a) {
index = j;
}
}
int temp = a;
a = a;
a = temp;
}
return a;
}
// 3.数组的插入排序
public int[] num3(int[] a) {
int n = a.length;
for (int i = 1; i < n; i++) { // 将a插入a
int t = a;
int j;
for (j = i - 1; j >= 0 && t < a; j--) {
a = a;
}
a = t;
}
return a;
}
// 4.设置两层循环
public int[] num4(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1; j++) {
// 比较大小移位
if (a > a) {
int temp = a;
a = a;
a = temp;
}
}
}
return a;
}
//5.Arrays.sort排序
public int[] num5(int[] a) {
Arrays.sort(a);
return a;
}
} 程序好像有点问题,当降序排完之后,再升序排就排不出来了。看来想法是好的,结果不是想要的。。。。。
我再找找问题所在,大神也帮帮我,谢谢,见笑了。 {:301_999:} Java从入门到放弃我已经不想这个了! 学习一下,感谢分享代码 任真地看了楼主的源代码,不过由于没学过Java 有些地方还是没看懂,不过关于楼主提出的问题我倒是这么想的:降序排完之后没必要再升序排列了,直接反着遍历输出就好了。
楼主那个冒泡的循环判断语句可以稍微改一下,外层循环每循环一次,内层循环可以少循环一次了,可以稍微提高一下效率。 加油慢慢积攒 新一代大神正在诞生加油 算法高于一切,你这方法效率太低了,本人也学习中。 我讨厌数据结构!! 让导弹飞 发表于 2017-12-21 00:12
算法高于一切,你这方法效率太低了,本人也学习中。
现在不是我算法低的问题,结果都不对呢。。。。 pmc 发表于 2017-12-21 00:02
任真地看了楼主的源代码,不过由于没学过Java 有些地方还是没看懂,不过关于楼主提出的问题我倒是这么想的: ...
毕竟是刚学,没有什么基础,算法什么的还真不懂呢。
页:
[1]
2