输入数并排序的小程序题,在线等 先把字符串分割成字符数组,然后再排序好了。输出的时候再加上+","。很easy的~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以前存的,你自己加异常判断import java.io.*;import java.util.*;public class SortAll { /** * 冒泡排序,选择排序,插入排序,希尔(Shell)排序(升序降序) */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入:数字以‘,’隔开"); String str = sc.next(); String [] tempa = str.split(","); int [] i = new int[tempa.length]; for(int ti=0;ti<tempa.length;ti++) { i[ti] = Integer.parseInt(tempa[ti]); } //int[] i = {13, 99, 67, 58, 466, 944, 3, 123, 539, 403, 596, 87 }; System.out.println("----冒泡排序的结果(从小到大):"); maoPao(i); System.out.println(); System.out.println("----选择排序的结果(从小到大):"); xuanZe(i); System.out.println(); System.out.println("----插入排序的结果(从小到大):"); chaRu(i); System.out.println(); System.out.println("----希尔(Shell)排序的结果(从小到大):"); shell(i); System.out.println("----冒泡排序的结果(从大到小):"); maoPaoDesc(i); System.out.println(); System.out.println("----选择排序的结果(从大到小):"); xuanZeDesc(i); System.out.println(); System.out.println("----插入排序的结果(从大到小):"); chaRuDesc(i); System.out.println(); System.out.println("----希尔(Shell)排序的结果(从大到小):"); shellDesc(i); } // 冒泡排序 public static void maoPao(int[] x) { for (int i = 0; i < x.length; i++) { for (int j = i + 1; j < x.length; j++) { if (x[i] > x[j]) { int temp = x[i]; x[i] = x[j]; x[j] = temp; } } } for (int i : x) { System.out.print(i + " "); } } // 冒泡排序Desc public static void maoPaoDesc(int[] x) { for (int i = 0; i < x.length; i++) { for (int j = i + 1; j < x.length; j++) { if (x[i] < x[j]) { int temp = x[i]; x[i] = x[j]; x[j] = temp; } } } for (int i : x) { System.out.print(i + " "); } } // 选择排序 public static void xuanZe(int[] x) { for (int i = 0; i < x.length; i++) { int lowerIndex = i; // 找出最小的一个索引 for (int j = i + 1; j < x.length; j++) { if (x[j] < x[lowerIndex]) { lowerIndex = j; } } // 交换 int temp = x[i]; x[i] = x[lowerIndex]; x[lowerIndex] = temp; } for (int i : x) { System.out.print(i + " "); } } // 选择排序Desc public static void xuanZeDesc(int[] x) { for (int i = 0; i < x.length; i++) { int lowerIndex = i; // 找出最大的一个索引 for (int j = i + 1; j < x.length; j++) { if (x[j] > x[lowerIndex]) { lowerIndex = j; } } // 交换 int temp = x[i]; x[i] = x[lowerIndex]; x[lowerIndex] = temp; } for (int i : x) { System.out.print(i + " "); } } // 插入排序 public static void chaRu(int[] x) { for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦 for (int j = i; j > 0; j--) { if (x[j] < x[j - 1]) { int temp = x[j]; x[j] = x[j - 1]; x[j - 1] = temp; } } } for (int i : x) { System.out.print(i + " "); } } // 插入排序Desc public static void chaRuDesc(int[] x) { for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦 for (int j = i; j > 0; j--) { if (x[j] > x[j - 1]) { int temp = x[j]; x[j] = x[j - 1]; x[j - 1] = temp; } } } for (int i : x) { System.out.print(i + " "); } } // 希尔排序 public static void shell(int[] x) { // 分组 for (int increment = x.length / 2; increment > 0; increment /= 2) { // 每个组内排序 for (int i = increment; i < x.length; i++) { int temp = x[i]; int j = 0; for (j = i; j >= increment; j -= increment) { if (temp < x[j - increment]) { x[j] = x[j - increment]; } else { break; } } x[j] = temp; } } for (int i : x) { System.out.print(i + " "); } } // 希尔排序Desc public static void shellDesc(int[] x) { // 分组 for (int increment = x.length / 2; increment > 0; increment /= 2) { // 每个组内排序 for (int i = increment; i < x.length; i++) { int temp = x[i]; int j = 0; for (j = i; j >= increment; j -= increment) { if (temp > x[j - increment]) { x[j] = x[j - increment]; } else { break; } } x[j] = temp; } } for (int i : x) { System.out.print(i + " "); } } } 楼上的回答挺全面的,我没有试,应该满足楼主的需求了吧。分享一点:楼主也是刚学习Java吧,Java面向对象的强大功能需要充分利用的,如果单纯写算法,用到基本的数据结构,就是八种基本的类型再配上一定的逻辑,这个任何语言除了一些简单的写法区别都是一样的。楼主在这样的问题面前,首先不妨自己思考一下思路,在纸上结合图形,这样一次一次的,你会对实现这种算法很有心得的。另外,这些算法利用Java类库来实现是很简单的,利用Java的封装性。推荐几个类,Comparable,TreeSet,TreeMap localsocket连接提示connect refused,求大侠如何解决 hashmap 求助:关于RSS解析器的问题! JSpinner如何设置文本框为不可编辑 【新手提问】高手来帮我看看,好简单好奇怪的代码!!! 请教:如何组织主界面庞大,组件关系复杂的窗体程序的结构? 问大侠:如何用代码激发一个事件? 关于Java Swing panel中 图片保存(某区域) 如何用javac编译指定路径下的文件 linkguic(rake)分数等着你了啊,快进来告诉我jade怎么用啊 有个字符串,须对其中的值排序的小问题,在线等 求解 安装不起eclipse!!!!!
import java.io.*;
import java.util.*;public class SortAll {
/**
* 冒泡排序,选择排序,插入排序,希尔(Shell)排序(升序降序)
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入:数字以‘,’隔开"); String str = sc.next(); String [] tempa = str.split(",");
int [] i = new int[tempa.length];
for(int ti=0;ti<tempa.length;ti++)
{
i[ti] = Integer.parseInt(tempa[ti]);
} //int[] i = {13, 99, 67, 58, 466, 944, 3, 123, 539, 403, 596, 87 };
System.out.println("----冒泡排序的结果(从小到大):");
maoPao(i);
System.out.println();
System.out.println("----选择排序的结果(从小到大):");
xuanZe(i);
System.out.println();
System.out.println("----插入排序的结果(从小到大):");
chaRu(i);
System.out.println();
System.out.println("----希尔(Shell)排序的结果(从小到大):");
shell(i);
System.out.println("----冒泡排序的结果(从大到小):");
maoPaoDesc(i);
System.out.println();
System.out.println("----选择排序的结果(从大到小):");
xuanZeDesc(i);
System.out.println();
System.out.println("----插入排序的结果(从大到小):");
chaRuDesc(i);
System.out.println();
System.out.println("----希尔(Shell)排序的结果(从大到小):");
shellDesc(i);
}
// 冒泡排序
public static void maoPao(int[] x) {
for (int i = 0; i < x.length; i++) {
for (int j = i + 1; j < x.length; j++) {
if (x[i] > x[j]) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 冒泡排序Desc
public static void maoPaoDesc(int[] x) {
for (int i = 0; i < x.length; i++) {
for (int j = i + 1; j < x.length; j++) {
if (x[i] < x[j]) {
int temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 选择排序
public static void xuanZe(int[] x) {
for (int i = 0; i < x.length; i++) {
int lowerIndex = i;
// 找出最小的一个索引
for (int j = i + 1; j < x.length; j++) {
if (x[j] < x[lowerIndex]) {
lowerIndex = j;
}
}
// 交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 选择排序Desc
public static void xuanZeDesc(int[] x) {
for (int i = 0; i < x.length; i++) {
int lowerIndex = i;
// 找出最大的一个索引
for (int j = i + 1; j < x.length; j++) {
if (x[j] > x[lowerIndex]) {
lowerIndex = j;
}
}
// 交换
int temp = x[i];
x[i] = x[lowerIndex];
x[lowerIndex] = temp;
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 插入排序
public static void chaRu(int[] x) {
for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦
for (int j = i; j > 0; j--) {
if (x[j] < x[j - 1]) {
int temp = x[j];
x[j] = x[j - 1];
x[j - 1] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 插入排序Desc
public static void chaRuDesc(int[] x) {
for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦
for (int j = i; j > 0; j--) {
if (x[j] > x[j - 1]) {
int temp = x[j];
x[j] = x[j - 1];
x[j - 1] = temp;
}
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 希尔排序
public static void shell(int[] x) {
// 分组
for (int increment = x.length / 2; increment > 0; increment /= 2) {
// 每个组内排序
for (int i = increment; i < x.length; i++) {
int temp = x[i];
int j = 0;
for (j = i; j >= increment; j -= increment) {
if (temp < x[j - increment]) {
x[j] = x[j - increment];
} else {
break;
}
}
x[j] = temp;
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
// 希尔排序Desc
public static void shellDesc(int[] x) {
// 分组
for (int increment = x.length / 2; increment > 0; increment /= 2) {
// 每个组内排序
for (int i = increment; i < x.length; i++) {
int temp = x[i];
int j = 0;
for (j = i; j >= increment; j -= increment) {
if (temp > x[j - increment]) {
x[j] = x[j - increment];
} else {
break;
}
}
x[j] = temp;
}
}
for (int i : x) {
System.out.print(i + " ");
}
}
}
分享一点:
楼主也是刚学习Java吧,Java面向对象的强大功能需要充分利用的,如果单纯写算法,用到基本的数据结构,就是八种基本的类型再配上一定的逻辑,这个任何语言除了一些简单的写法区别都是一样的。楼主在这样的问题面前,首先不妨自己思考一下思路,在纸上结合图形,这样一次一次的,你会对实现这种算法很有心得的。
另外,这些算法利用Java类库来实现是很简单的,利用Java的封装性。推荐几个类,Comparable,TreeSet,TreeMap