首页 > 编程知识 正文

快速排序c语言,c语言快速排序函数

时间:2023-05-05 15:44:41 阅读:141683 作者:2887

描述

有n个无序的整数。 请按照从大到小的顺序排列。

要求:本题用直接插入排序法完成。

输入

一共输入两行。 第一行是整数n

(0 n 100000 )指示存在n个整数。

第二行是int表示形式范围内的n个整数,每个整数之间有空格分隔。

Output

直接插入每行并逐行输出排序结果。

样品输入

5

8 4 1 5 7

样品输出

8 4 1 5 7

8 4 1 5 7

8 5 4 1 7

8 7 5 4 1

直接排序:将序列分为有序序列和无序序列,按顺序从无序序列中提取元素并将其插入有序序列的相应位置。 初始是有序序列中只有第一个数,剩下的n-1个数构成无序序列。

解法源代码:

#包含

int a[100001];

int main () )

{

输入

n,I,j,t;

scanf('%d ',n );

for(I=0; I

scanf('%d ',a[i] );

for(I=1; I

{

t=a[i]; //将要插入的数量临时放置在变量t中

for(j=I-1; j=0a[j]; j----//按秩序序列(下标0 ) I-1 )查找出入位置

{

a[j 1]=a[j]; //如果找不到插入点,请将位置移动到当前元素的后面,以提供插入元素的空间

}

a[j 1]=t; //找到插入位置,完成插入

for(j=0; Jj

printf('%d ',a[j] );

printf(%d(n ),a[n-1];

}

返回0;

}

将序列分为有序序列和无有序序列,

按顺序从无序序列中检索元素值,并将其插入已排序序列中的适当位置。

初期

有序序列中只有第一个数,剩下的

n-1

当个数构成无序排列时

n

个数需要列入

n-1

二次插入。 在有序序列中插入位

您可以从序列的最后一个数字开始向前移动,以便在找不到插入点之前同时向后移动元素,为插入元素提供空间。

将序列分为有序序列和无有序序列,

按顺序从无序序列中检索元素值,并将其插入已排序序列中的适当位置。

初期

有序序列中只有第一个数,剩下的

n-1

当个数构成无序排列时

n

个数需要列入

n-1

二次插入。 在有序序列中插入位

您可以从序列的最后一个数字开始向前移动,以便在找不到插入点之前同时向后移动元素,为插入元素提供空间。

将序列分为有序序列和无有序序列,

按顺序从无序序列中检索元素值,并将其插入已排序序列中的适当位置。

初期

有序序列中只有第一个数,剩下的

n-1

当个数构成无序排列时

n

个数需要列入

n-1

插入排序的关键是找到可以插入的位置。 就像我们按照身高的顺序从左到右从高到低排列一样。 以第二个同学为标准,把人分为左有序,右无序。 左起,比较第一个同学和第二个同学,如果第一个同学比第二个同学高,则继续以第三个同学为基准进行同样的比较。 如果第一个同学比第二个同学高,则第二个同学插入在第一个同学之前。

例如,8 4 1 5 7

第一次:以4为准。 8与4比较,结果:8 4 1 5

7

第二次:以1为准。 4与1进行比较,8与1进行比较的结果:8(4)1) 5

7

第二次:以5为准。 1和5的比较、4和5的比较、8和5的比较、结果:8 5 4

1 7

第四次:以上

以7为基准。 比较5和7,比较1和7,比较4和7,比较8和7,得到: 87541

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。