用计算机排序,排序

排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。[1]

中文名

排序

外文名

sequence

性    质

计算机内经常进行的一种操作排序算法

分    类

应用学科

数学 计算机

排序概念

编辑

语音

将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。[2]

排序常见排序算法

排序分类

◆稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在

用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法

是稳定的。其中冒泡,插入,基数,归并属于稳定排序,选择,快速,希尔,归属于不稳定排序。[3]

◆就地排序:若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),

则称为就地排序。

排序冒泡排序

编辑

语音

排序原理

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮,以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。降序排列与升序排列相类似,若a[1]小于a[2]则交换两者的值,否则不变,后面以此类推。 总的来讲,每一轮排序后最大(或最小)的数将移动到数据序列的最后,理论上总共要进行n(n-1)/2次交换。[2]

排序优劣

优点:稳定。

缺点:慢,每次只能移动相邻两个数据。

排序Pascal程序

program name;

var

a:array[1..N] of 1..MAX;

temp,i,j:integer;

begin

randomize;

for i:=1 to N do a:=1+random(MAX);

writeln('Array before sorted:');

for i:=1 to N do write(a,' ');

writeln;

for i:=N-1 downto 1 do

for j:=1 to i do

if a[j]

begin

temp:=a[j];

a[j]:=a[j+1];

a[j+1]:=temp

end;

writeln('Array sorted:');

for i:=1 to N do write(a,' ');

writeln;

writeln('End sorted.');

readln;

end.

排序c++程序

对N个数进行从小到大排序:

#include 

using namespace std;

int a[101];

int main()

{

int n;

cin>>n;

for(int i=1;i<=n;i++)//输入数据

cin>>a[i];

for(int i=1;i

{

bool flag=true;

for(int j=1;j<=n-i;j++)

{

if(a[j+1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值