已知序列{8,7,4,6,5,2,3,1,9}.试用冒泡排序法对序列进行排序,并写出中间过程。 C语言用冒泡排序法对数组中的8个整数(a[8]={6,8,5...

作者&投稿:善雷 (若有异议请与网页底部的电邮联系)

已知序列{8,7,4,6,5,2,3,1,9},冒泡排序法对序列进行从小到大排序过程为:

{8,7,4,6,5,2,3,1,9}

={7,4,6,5,2,3,1,8,9}

={4,6,5,2,3,1,7,8,9}

={4,5,2,3,1,6,7,8,9}

={4,2,3,1,5,6,7,8,9}

={2,3,1,4,5,6,7,8,9}

={2,1,3,4,5,6,7,8,9}

={1,2,3,4,5,6,7,8,9}

扩展资料:

冒泡排序算法的原理如下比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡排序是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变。



874652319 746523189 465231789 462315789 423156789 231456789 213456789 123456789(这是从小到大,你也可以从大到小)

编写程序对无序序列5 1 7 3 1 6 9 4 2 8 6进行冒泡排序。~

#include"iostream"
#include"iomanip"
using namespace std;
int main()
{
const N=11;
unsigned int i,j,temp;
unsigned int a[N]={5,1,7,3,1,6,9,4,2,8,6};
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1]) /*冒泡排序的主要内容每次把比较相邻两个元素把把
大的放后面*/
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}

}
for(i=0;i<N;i++)
{
cout<<setw(5)<<a[i]<<endl;
}
return 0;
}

#include "stdio.h"
int main()
{
int buf[8]={6,8,5,4,6,9,3,2};
int i,j,k;
for(i=0;i<8;i++)
for(j=7;j>i;j--)
if(buf[j]<buf[j-1])
{
k=buf[j];
buf[j]=buf[j-1];
buf[j-1]=k;
}
for(i=0;i<8;i++)printf("%d ",buf[i]);
putchar('
');
return 0;
}
PS:
一楼用C++,对于新手不好吧,二楼循环看来不像冒泡,倒像是沉石头算法,这也是编程习惯而已,呵呵

设集合序列{1},{2,3}, {4,5,6}, {7,8,9,10}…求Sn拜托了各位 谢谢
答:第k个集合有k个元素 故前n-1个集合元素的个数为1+2+...+(n-1)=n(n-1)/2 则第n个集合的第一个元素为n(n-1)/2+1=(n^2-n+2)/2 最后一个元素为(n+1)n/2 故Sn=[(n^2-n+2)/2+(n+1)n/2]n/2=(n^2+1)n/2 ...

求教数学题,具体问题看补充
答:我们可以设n个元素为1至n这n个自然数,并规定由大到小为标准次序。设p1p2……pn 为这n个自然数的一个排列,考虑元素pi(i=1,2,……n),如果比pi大的而且排在 pi前面的元素有ti个,就说pi这个元素的逆序对是ti。全体元素的逆序对之和为 T1=t1+t2+……+tn 而每一个半序序列就有一...

如何随机生成序列,例如0-9生成随机的序列3,5,1,6,8,4,9,7,0,2
答:这么写就可以了 private void button1_Click(object sender, EventArgs e){ List<int> arrList = new List<int>();string str = "";for (int i = 0; i < 10; i++){ arrList.Add(i);} int num;Random random = new Random();while (arrList.Count != 0){ num = random.Next(...

...到五个数跳出来,最后的输出结果是5,2,8,7,1,4,6,3
答:int[] sequence = {1, 2, 3, 4, 5, 6, 7, 8};byte isComplete = 0;// 输入数组长度刚好是8,可以利用1 byte(= 8 bit)的二进制数,// 记录哪一位置的元素已经被删除, 删除,此位设为1,否则是0 int sequenceLength = sequence.length;// 加入输入序列长度项,实现反复循环不越界 i...

有一分数序列1/2,3/4,5/6,7/8...19/20,怎样求该序列的和,请写出程序...
答:include <iosteam.h> void main(){ int,i,sum;sum=0;for(i=1;i<20;i++)sum+=i/(i+1);cout<<sum;}

集合序列{1}{2,3}{4,5,6}{7,8,9,10},求第10个集合元素之和
答:由题意知,第n个集合有n个元素,前n-1个集合共有元素1+2+3+4+...+n-1=n(n-1)/2个,所以第n个集合的首项(n^2-n+2)/2,末项是(n^2+n)/2,由等差数列求和公式可得 n=21时,第21个集合的首项是211,末项是231,所以sn=(221+231)*21/2=4641 ...

已知元素为整数数列序列{1},{2,3},{4,5,6},{7,8,9,10}、、、
答:第n-1个数集里最大的数是n(n-1)/2,第n个数集里最大的数是n(n+1)/2,所以第n个数集中所有的数的和Sn=[n(n-1)/2+1]+[n(n-1)/2+2]+……+[n(n-1)/2+n]=(n^3+n)/2

设一棵二叉树的前序序列为1,2,3,4,5,6,7,8,9,其中序序列为2,3,1,5...
答:前序:abdgcefh 中序:dgbaecfh 本题问题在于如何根据给定的前序中序结果画出二叉树,从而来确定后序的问题。分析过程如下:(1)前序顺序为根左右,根据前序知道:a为根节点,然后观察a在中序遍历中的结果得到:dgb为a的左子树的中序遍历结果,echf为a的右子数的中序遍历结果。(2)紧接着上面...

python中的for i in range怎么用
答:for i in range(1, 101,1):print i range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数。for i in range(1, 101)就是说,把这些数,依次赋值给变量i。相当于一个一个循环过去,第一次i = 1,第二次i = 2,……,直到i = 100。当i = 101时跳出循环。

设集合序列{1},{2,3}, {4,5,6}, {7,8,9,10}……设SN是第N个集合的元素...
答:(1)n=1{1} n=2{2,3}首项与前面差1,为1+1,有两个元素 n=3{4,5,6}首项与前面差2,为1+2+1,有三个元素 n=4{7,8,9,10}首项与前面差3,为1+2+3+1,有四个元素 ┋ ┋ n=21{ }首项与前面差20,为1+2+3+...+20+1=211 等差数列求和:以1为首项,20为末项...