达人帮我冒泡排序一下

来源:百度知道 编辑:UC知道 时间:2024/09/26 03:30:37
一个六位数的密码,是由六位数426815 两次冒泡排序得到。
请问正确密码是多少?
A 842651
B 826415
C 864251
D 124685
小明出生年月是由 82009022 这几个数字组成。只要经过一次冒泡排序就知道他确切的生日,请问他的出生年月是? A 20020928 B 20020829 C 20080922 D 20080229

C
D
第一个按降序排序。
第二个按升序排序。
按升序排序的冒泡算法的完整的程序如下,程序在tc2.0下运行良好:(如要按降序排序只要将if(R[j+1]<R[j])这句改为if(R[j+1]>R[j])即可)

#include <stdio.h>
#define MAX 255
int R[MAX];
void Bubble_Sort(int n)
{ /* R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序 */
int i,j;
int exchange; /* 交换标志 */
for(i=1;i<n;i++)
{ /* 最多做n-1趟排序 */
exchange=0; /* 本趟排序开始前,交换标志应为假 */
for(j=n-1;j>=i;j--) /* 对当前无序区R[i..n]自下向上扫描 */
if(R[j+1]<R[j])
{ /* 交换记录 */
R[0]=R[j+1]; /* R[0]不是哨兵,仅做暂存单元 */
R[j+1]=R[j];
R[j]=R[0];
exchange=1; /* 发生了交换,故将交换标志置为真 */
}
if(!exchange) /* 本趟排序未发生交换,提前终止算法 */
return;
}
}

void main()
{
int i,n;
clrscr();
puts("Please input total element number of the sequence:");
scanf("%d",&n);
if(n<=0||n>MAX)
{
printf("n must more than 0 and less than %d.\n",