main.cpp

来自「内嵌汇编写的起泡排序」· C++ 代码 · 共 58 行

CPP
58
字号
//**************************
//Inline assembly using
//bubble-up algorithm
//**************************

#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;

#define	array_size 30000

void main()
{
	//Generate array;
	int a[array_size];
	srand (GetTickCount());
    for (int i=0; i<array_size; i++)
	{
		a[i] = rand()%50000;
	}
	
	int *p;
	p=&a[0];
	p--;

	DWORD timelapse, timestart;

	timestart = GetTickCount();

	__asm
	{
		mov esi,p;
		mov ecx,array_size;
_outloop:
		mov edx,ecx;
_inloop:
		mov eax, [ esi+ecx*4 ]; 
		mov ebx, [ esi+edx*4 ];
		cmp eax, ebx;
		jnb _noxchg; 
		mov [ esi+ecx*4 ], ebx;
		mov [ esi+edx*4 ], eax;
_noxchg:
		dec edx;
		jnz _inloop;
		loop _outloop;
	}

	timelapse = GetTickCount() - timestart;

	for (i=0; i<array_size; i++)
	{
		cout<<a[i]<<" ";
	}
	cout<<endl<<"Time elapsed "<<timelapse<<endl;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?