输入10个数,用冒泡排序法按由小到大顺序排序并输出??c语言的

Python028

输入10个数,用冒泡排序法按由小到大顺序排序并输出??c语言的,第1张

如下参考:

#包括<stdio, h >

Intmain()

Inta[10]={0};

IntI=0,j=0,t=0;

For (I = 0我<10我+ +)

{scanf (" % d ", &a [I])}

For (I = 0我<10我+ +)

{for (j = 0J <10 - IJ + +) {

If (a >[j] a [j + 1))

T=a,[j]。

A[j]=A,A+1加到[j]。

A[m+1]=t;

}}}

For (I = 0我<10我+ +)

{printf("%d",a[I]);}

返回0;}

任意输入10个数据,程序运行:

扩展资料:

冒泡排序算法的复杂原理如下:

1.比较相邻metaelements。如果第一个比第二个大,就交换它们。

2.对每一对相邻的元素执行相同的操作,从第一对开始,到最后一对结束。此时,最后一个元素应该是最大的数。

3.对除最后一个元素之外的所有元素重复上述步骤。

4.每次对越来越少的元素重复上述步骤,直到没有一对数字可供比较。

#include <stdio.h>

int main(){

int number[10] = {95, 45, 15, 78, 84, 51, 24, 12,34,23}

for (int j = 0 j <9 j++)

for (int i = 0 i <9 - j i++)  {

if(a[i] > a[i + 1])    {

                  int temp = a[i]

a[i] = a[i + 1]

a[i + 1] = temp  }

}

for (int i = 0 i <10 i++)  {

printf(“%d”,a[i])     }

}

扩展资料:

常见排序算法

快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

插入排序

已知一组升序排列数据a[1]、a[2]、……a[n],一组无序数据b[1]、b[2]、……b[m],需将二者合并成一个升序数列。

首先比较b[1]与a[1]的值,若b[1]大于a[1],则跳过,比较b[1]与a[2]的值,若b[1]仍然大于a[2],则继续跳过,直到b[1]小于a数组中某一数据a[x],则将a[x]~a[n]分别向后移动一位,将b[1]插入到原来a[x]的位置这就完成了b[1]的插入。

b[2]~b[m]用相同方法插入。

快速排序

快速排序是大家已知的常用排序算法中最快的排序方法。已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先任取数据a[x]作为基准。

比较a[x]与其它数据并排序,使a[x]排在数据的第k位,并且使a[1]~a[k-1]中的每一个数据<a[x],a[k+1]~a[n]中的每一个数据>a[x],然后采用分治的策略分别对a[1]~a[k-1]和a[k+1]~a[n]两组数据进行快速排序。

希尔排序

已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。

首先取一增量d(d<n),将a[1]、a[1+d]、a[1+2d]……列为第一组,a[2]、a[2+d]、a[2+2d]……列为第二组……,a[d]、a[2d]、a[3d]……列为最后一组以次类推,在各组内用插入排序,然后取d'<d,重复上述操作,直到d=1。

参考资料:排序-百度百科

C语言程序如下;

#include <stdio.h>

#define ARR_LEN 255 /*数组长度上限*/

#define elemType int /*元素类型*/

/* 冒泡排序 */

/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 */

/* 2. 对所有元素均重复以上步骤,直至最后一个元素 */

/* elemType arr[]: 排序目标数组 int len: 元素个数 */

void bubbleSort (elemType arr[], int len) {

elemType temp

int i, j

for (i=0 i<len-1 i++) /* 外循环为排序趟数,len个数进行len-1趟 */

for (j=0 j<len-1-i j++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */

if (arr[j] > arr[j+1]) { /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */

temp = arr[j]

arr[j] = arr[j+1]

arr[j+1] = temp

}

}

int main (void) {

elemType arr[ARR_LEN] = {3,5,1,-7,4,9,-6,8,10,4}

int len = 10

int i

bubbleSort (arr, len)

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

printf ("%d\t", arr[i])

putchar ('\n')   

return 0

}

扩展资料:

算法分析

时间复杂度

若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C

和记录移动次数M均达到最小值:

所以,冒泡排序最好的时间复杂度为O(n)。

若初始文件是反序的,需要进行n-1趟排序。每趟排序要进行能n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:

冒泡排序的最坏时间复杂度为O(n^2)。

综上,因此冒泡排序总的平均时间复杂度为O(n^2)。

参考资料:百度百科-冒泡排序法