汇编选择排序

dseg segment
        source_data dw ?,-1,3,6,1,5
        count equ $-source_data
dseg ends
cseg segment
        assume cs:cseg , ds:dseg
start:
        mov ax , dseg
        mov ds , ax

        mov bx , count     ;外循环指针
        sub bx ,2

next_loop:
        mov ax , [bx]
        mov di , bx        ;mark
        mov si , bx        ;内循环指针
        sub si , 2
        jz  next_label
find_next:
        mov dx , [si]
        cmp dx , ax
        jge next
        mov ax , [si]
        mov di , si
next:   sub si , 2
        jnz find_next
        cmp di , bx
        je  next_label
        mov ax , [bx]
        mov dx , [di]
        xchg ax , dx
        mov [bx] , ax
        mov [di] , dx
next_label:
        sub bx , 2
        jnz next_loop

        mov ax , 4c00h
        int 21h 

cseg ends
end  start
时间: 2024-11-05 17:26:35

汇编选择排序的相关文章

汇编实现排序——简单选择排序

上阵子重温数据结构,差不多更新到排序.这学期学了汇编语言,其中有几个实验便是实现内部排序算法.以下是实现简单选择排序的程序设计: S0 SEGMENT STACK DW 20 DUP(?) TOP LABEL WORD S0 ENDS S1 SEGMENT TIP DB "Input ten number and separate the numbers with space:", 0DH, 0AH, 24H ARY DW 20 DUP(0) CRLF DB 0DH, 0AH, 24H

算法 排序lowB三人组 冒泡排序 选择排序 插入排序

参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两个记录序号同等,且两者在原无序记录中的先后秩序依然保持不变,则称所使用的排序方法是稳定的,反之是不稳定

选择排序 —— 排序算法系列

假设我们有如下一个数组: 使用选择排序算法对这个数组进行排序,步骤如下: 第 1 次 在下标0到6之间找到最小的数字,我们可以发现最小的数字是15,它在下标为4的位置上: 把下标4上面的数字跟下标0上面的数字互换,得到排序如下图的数组: 第 2 次 在下标1到6之间找到最小的数字,我们可以发现最小的数字是33,它在下标为5的位置上: 把下标5上面的数字跟下标1上面的数字互换,得到排序如下图的数组: 第 3 次 在下标2到6之间找到最小的数字,我们可以发现最小的数字是48,它在下标为5的位置上:

八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)

基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止. 简单选择排序的示例: 操作方法: 第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换: 第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换: 以此类推..... 第i 趟,则从第i 个记录开始的n-i+1 个记录中选出关键码最小的记录与

数据结构-选择排序

选择排序 1.选择排序 //堆排序,向下调整子函数 void AdjustDown(int *a, size_t size, size_t root) { size_t parent = root; size_t child = parent * 2 + 1; while (child < size) { //选择孩子节点中较大的节点,与父亲节点交换 if (child + 1 < size&&a[child + 1] > a[child]) { ++child; } i

C语言选择排序

#include <stdio.h> //选择排序 void selectSort(int a[],int len){          //外层循环控制趟数,每一趟把一个最小数放到没有排序的序列第一个位置     int min;//保存最小的数的下标     for (int i=0; i<len-1; i++) {                  //假设一个最小值         min = i;                  //找实际的最小值的下标         fo

简单选择排序的C++实现

简单选择排序(simple selection sort)的基本思想: 第一次选择所有数组元素中最小的放到第一个位置,第二次从剩下的n-1个元素中选择最小的放到第二个位置,以此类推,直到剩下一个元素,放到最后的位置上. 基本步骤: (1)首先通过n-1次比较,从n个数组元素中找出最小的,将它与a[0]交换——第1趟选择排序,结果最小的数被安置在a[0]位置上. (2)再通过n-2次比较,从剩下的n-1个数组元素中找出次小的,将它与a[1]交换——第二趟选择排序,结果次小的放在a[1]的位置上.

算法学习之排序算法(三)(选择排序法)

1.引言 选择排序工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 选择排序是不稳定的排序方法.选择排序是和冒泡排序差不多的一种排序.和冒泡排序交换相连数据不一样的是,选择排序只有在确定了最小的数据之后,才会发生交换.怎么交换呢?我们可以以下面一组数据作为测试: 2, 1, 5, 4, 9 第一次排序:1, 2, 5, 4, 9 第二次排序: 1, 2, 5, 4, 9 第三次排序: 1, 2, 4, 5, 9 第四次排序:

选择排序与python实现

1.算法思想 n 个元素,假设前 i 个元素已经排好序,从i+1到n个元素中选出最小的元素放在它在有序表中的最终位置上 2.代码实现 (1)非递归调用 def SelectionSort(A, n): for i in range(0, n-2): mini = i for j in range(i+1, n): if A[j] < A[mini]: i = j A[i],A[mini] = A[mini], A[i] #swap print A if __name__=='__main__':