C++: 用bubblesort写个排顺序的程序。

C++: 用bubblesort写个排顺序的程序。,第1张

for(int k=0k<6k++)//应该是k<5

{

for(int l=k+1l<6l++)

{

e=1

for(int n=0n<30n++)

{

if(a[k][n]>a[l][n]&&e==1)

{

e++

for(int m=0m<30m++)

{

b[m]=a[k][m]

a[k][m]=a[l][m]

a[l][m]=b[m]

}

}

}

}

}

看得出,你是想用选择法排序,但具体错在哪,我也没看出来

为什么要把字符串给一个一个地拆了呢?

你要排的是字符串不是字符啊

对字符串整体进行 *** 作不是更方便吗?

在Windows XP + VC++6.0下正常运行

#include<iostream>

#include<cstdio>

using namespace std

void danci_paixu()

{

char a[6][30]

cout<<"请输入六个英文单词:"<<endl

for(int i=0i<6i++)

cin>>a[i]

char b[30]

int e

for(int k=0k<5k++)

{

e=k

for(int l=k+1l<6l++)

{

if(strcmp(a[l],a[e])<0)

e=l

if(e!=i)

{

strcpy(b,a[k])

strcpy(a[k],a[e])

strcpy(a[e],b)

}

}

}

cout<<"降序排列后:"<<endl

for(i=0i<6i++)

cout<<a[i]<<endl

cout<<endl

}

int main()

{

danci_paixu()

return 0

}

/*运行结果:

请输入六个英文单词:

it is interesting to study c++.

降序排列后:

c++.

interesting

is

it

study

to

*/

冒泡排序是一种计算机科学领域的较简单的排序算法。

从后向前,比较相邻的元素,如果第一个比第二个大,就交换他们两个。比较每一对相邻元素,到队尾最后一个元素应该会是最大的数。依次类推,比出第二大的数,直至所有元素都成倒叙排列(9,8,7,6,5,4,3,2,1,0)

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

时间复杂度

若文件本身的排列和想要的排列一致,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值。

原排序(9,8,7,6,5,4,3,2,1,0) ➡ 需要排序(9,8,7,6,5,4,3,2,1,0)

[图片上传失败...(image-b8e712-1571212381789)]

若文件本身的排列和想要的排列相反,需要进行n-1趟排序,每趟排序要进行n-i次关键字的比较。

比如 原排序(1,2,3,4,5) ➡ 需要排序(5,4,3,2,1)

n = 5, 1 <= i <5 排列次数 1+2+3+...+(n-1) = n*(n-1)/2

每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

[图片上传失败...(image-36e71a-1571212381789)]

[图片上传失败...(image-fc1c25-1571212381789)]

冒泡排序的最坏时间复杂度为 [图片上传失败...(image-10a015-1571212381789)]

冒泡排序总的平均时间复杂度为 [图片上传失败...(image-1272a9-1571212381789)]

算法描述

C语言

void bubble_sort(int a[] , int n)

{

}

OC语言

NSMutableArray * arr = [NSMutableArray arrayWithObjects:@"5",@"4",@"3",@"2",@"1", nil]

for (int j = 0j <arr.count - 1j++) {

}

NSLog(@"%@",arr)

时间复杂度

算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用于大O符号表示,不包括这个函数的低阶项和首项系数。O(n)即时间复杂度为n。

void bubbleSort(int arr[], int n){

    int i,j,t

    for(i=0i<ni++){

        for(j=0j<n-1j++){

                if(arr[j]>arr[j+1]){

                t=arr[j]

                arr[j]=arr[j+1]

                arr[j+1]=t

            }

        }

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7871610.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存