3个回答
展开全部
汇编不会,给个java的:
import java.util.Scanner;
public class paixu {
/**
* 冒泡排序
*
* @param a
*/
public static void MaoPao(int a[]) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
/**
* 插入排序
*
* @param a
*/
public static void ChaRu(int a[]) {
for (int i = 1; i < a.length; i++) {
int temp = a[i];
int in = i;
while (in > 0 && a[in - 1] >= temp) {
a[in] = a[in - 1];
--in;
}
a[in] = temp;
}
}
/**
* 选择排序
*
* @param a
*/
public static void XuanZe(int a[]) {
for (int i = 0; i < a.length; i++) {
int lowIndex = i;
for (int j = a.length - 1; j > i; j--) {
if (a[j] < a[lowIndex])
lowIndex = j;
}
int temp = a[i];
a[i] = a[lowIndex];
a[lowIndex] = temp;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean m = true, n = true;
while (m) {
n = true;
System.out.print("\t===排序===\n请输入数字,用逗号做分割符(N退出):\n");
String num = input.next();
if (num.equalsIgnoreCase("N")) {
System.out.println("\t===程序结束===");
System.exit(0);
}
String res[] = num.split(",");
int[] a = new int[res.length];
for (int i = 0; i < res.length; i++) {
a[i] = Integer.parseInt(res[i]);
}
while (n) {
System.out
.println("\n选择排序方式:\n\t1.冒泡排序\t2.插入排序\n\t3.选择排序\t4.返回上一级");
int b = input.nextInt();
switch (b) {
case 1:
System.out.println("冒泡排序:");
MaoPao(a);
break;
case 2:
System.out.println("插入排序:");
ChaRu(a);
break;
case 3:
System.out.println("选择排序:");
XuanZe(a);
break;
case 4:
n = false;
break;
default:
break;
}
if (b != 4)
output(a);
}
}
}
public static void output(int a[]) {
for (int i = 0; i < a.length; i++) {
String le = i == a.length - 1 ? "\n" : a[i] == a[i + 1] ? "=" : "<";
System.out.print(a[i] + le);
}
}
/**
* 冒泡排序: 排序方法:相邻的两个元素进行比较,如有需要则进行替换位置达到排序目的。 优点:若数据已经有部分排序好,则可以很快完成排序。
* 缺点:会造成数据的反复扫描,比较两个相邻的数据,速度不快也没效率。 插入排序:
* 排序方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数据最后,直到全部待排序数据排完。 优点:最简单的排序。
* 缺点:比其他排序消耗时间多。 选择排序: 排序方法:将一个记录插入到已排好序的有序表(可能是空表),从而得到一个新的记录数增1的有序表。
* 优点:属于简单排序,利用一个一个元素的插入比较,将元素放入适当的位置。 缺点:每次都与之前的数据相比较,浪费时间。
*/
}
import java.util.Scanner;
public class paixu {
/**
* 冒泡排序
*
* @param a
*/
public static void MaoPao(int a[]) {
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
}
/**
* 插入排序
*
* @param a
*/
public static void ChaRu(int a[]) {
for (int i = 1; i < a.length; i++) {
int temp = a[i];
int in = i;
while (in > 0 && a[in - 1] >= temp) {
a[in] = a[in - 1];
--in;
}
a[in] = temp;
}
}
/**
* 选择排序
*
* @param a
*/
public static void XuanZe(int a[]) {
for (int i = 0; i < a.length; i++) {
int lowIndex = i;
for (int j = a.length - 1; j > i; j--) {
if (a[j] < a[lowIndex])
lowIndex = j;
}
int temp = a[i];
a[i] = a[lowIndex];
a[lowIndex] = temp;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean m = true, n = true;
while (m) {
n = true;
System.out.print("\t===排序===\n请输入数字,用逗号做分割符(N退出):\n");
String num = input.next();
if (num.equalsIgnoreCase("N")) {
System.out.println("\t===程序结束===");
System.exit(0);
}
String res[] = num.split(",");
int[] a = new int[res.length];
for (int i = 0; i < res.length; i++) {
a[i] = Integer.parseInt(res[i]);
}
while (n) {
System.out
.println("\n选择排序方式:\n\t1.冒泡排序\t2.插入排序\n\t3.选择排序\t4.返回上一级");
int b = input.nextInt();
switch (b) {
case 1:
System.out.println("冒泡排序:");
MaoPao(a);
break;
case 2:
System.out.println("插入排序:");
ChaRu(a);
break;
case 3:
System.out.println("选择排序:");
XuanZe(a);
break;
case 4:
n = false;
break;
default:
break;
}
if (b != 4)
output(a);
}
}
}
public static void output(int a[]) {
for (int i = 0; i < a.length; i++) {
String le = i == a.length - 1 ? "\n" : a[i] == a[i + 1] ? "=" : "<";
System.out.print(a[i] + le);
}
}
/**
* 冒泡排序: 排序方法:相邻的两个元素进行比较,如有需要则进行替换位置达到排序目的。 优点:若数据已经有部分排序好,则可以很快完成排序。
* 缺点:会造成数据的反复扫描,比较两个相邻的数据,速度不快也没效率。 插入排序:
* 排序方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好的数据最后,直到全部待排序数据排完。 优点:最简单的排序。
* 缺点:比其他排序消耗时间多。 选择排序: 排序方法:将一个记录插入到已排好序的有序表(可能是空表),从而得到一个新的记录数增1的有序表。
* 优点:属于简单排序,利用一个一个元素的插入比较,将元素放入适当的位置。 缺点:每次都与之前的数据相比较,浪费时间。
*/
}
来自:求助得到的回答
展开全部
DATA SEGMENT
BUFFER DB 10 DUP(?) 定义 是个字节数 我这边直接代替了
DATA SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
XOR AX,AX
LEA SI,BUFFER
MOV BL,9 外循环次数
NEXT1:MOV CL,BL 内循环次数
MOV DI,SI
NEXT2:MOV AL,DI
INC DI
CMP AL,DI
JB NEXT3 第一个数小于第二个数的话 不交换
MOV DL,[DI] 否则交换
MOV [DI-1],DL
MOV [DI],AL
NEXT3:DEC CL
JNZ NEXT2
DEC BL
JNZ NEXT1
MOV AH,4CH
INT 21H
CODE ENDS
END START
BUFFER DB 10 DUP(?) 定义 是个字节数 我这边直接代替了
DATA SEGMENT
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
XOR AX,AX
LEA SI,BUFFER
MOV BL,9 外循环次数
NEXT1:MOV CL,BL 内循环次数
MOV DI,SI
NEXT2:MOV AL,DI
INC DI
CMP AL,DI
JB NEXT3 第一个数小于第二个数的话 不交换
MOV DL,[DI] 否则交换
MOV [DI-1],DL
MOV [DI],AL
NEXT3:DEC CL
JNZ NEXT2
DEC BL
JNZ NEXT1
MOV AH,4CH
INT 21H
CODE ENDS
END START
本回答被网友采纳
展开全部
我这里有个以前编的串排序程序(汇编语言的)是用冒泡法排的,要的话说下邮箱给你发过去。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询