❶ 用冒泡排序法对输入的10个数进行升序排序 并存入数组中
c语言程序如下;
#include<stdio.h>
#defineARR_LEN255/*数组长度上限*/
#defineelemTypeint/*元素类型*//*冒泡排序*/
/*1.从当前元素起,向后依次搜亮比较每一对相邻元素,若逆序则交换*/
/*2.对所有元素均重复以上步骤,直至最后一个元素*/
/*elemTypearr[]:排序目标数组;intlen:元素个数*/
voidbubbleSort(elemTypearr[],intlen){
elemTypetemp;
inti,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){
elemTypearr[ARR_LEN]={3,5,1,-7,4,9,-6,8,10,4};
intlen=10;
inti;
bubbleSort(arr,len);
for(i=0;i<len;i++)
printf("%d ",arr[i]);
putchar(' ');
return0;
}
冒泡排序的最坏时间复杂度为O(n^2)。
综上,因此冒泡排序总的平均时间复杂度为O(n^2)。
❷ c语言编程:对10个数冒泡排序(升序)。
#include<stdio.h>
intmain(){
intnumber[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>
int main ()
{
int a[10];
int i, j, t;
printf ("请输入十个数: ");
for (i = 0; i < 10; i++)
{
printf ("a[%d]=", i+1);
scanf ("%d",&a[i]);
}
for (j = 0;j < 9; j++)
for (i = 0; i < 9 - j; i++)
if (a[i] > a[i+1])
{
t = a[i];
a[i] = a[i+1];
a[i+1] = t;
}
printf ("由小到大的顺序为: ");
for (i = 0; i < 10; i++)
{
printf ("%d,",a[i]);
}
printf (" ");
return 0;
}
运行结果
请输入十个数:
a[1]=7
a[2]=8
a[3]=9
a[4]=6
a[5]=5
a[6]=4
a[7]=1
a[8]=2
a[9]=3
a[10]=99
由小到大的顺序为:
1,2,3,4,5,6,7,8,9,99。
冒泡排序算法的原理如下:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
(3)c语言使用冒泡法进行升序扩展阅读:
冒泡排序的思想:
首先,从表头开始往后扫描数组,在扫描过程中逐对比较相领两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为清去了一个逆序。
在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元素应有的位置。
然后,在剩下的数组元素中(n-1个元素)重复上面的过程,将次小元素放到倒数第2个位置。不断重复上述过程,直到剩下的数组元素为0为止,此时的数组就变为了有序。
假设数组元素的个数为西,在最坏情况下需要的比较总次数为:(n-1)+(n-2)...+2+1)-n(n-1)/2。
❹ c语言 用一个函数实现用冒泡法对十个整数升序和降序排列 麻烦写全些
#include<stdio.h>
voidsort1(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
voidsort2(inta[],intn)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
intmain()
{inti,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("
");
sort1(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("
");
sort2(a,10);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("
");
return0;
}
❺ c语言怎么做冒泡排序啊
使用冒泡排序法进行编程:
解释:
1.第一个for循环:利用数组循环输入4个变量。
2.第二个for循环:该循环的意思是如果a[0]>a[1]的话,两个变量的值交换,利用循环依次比较。要注意的是i<3,因为其中有i+1,i最大取到2,也就闷渣是i+1最大取到3才正确。
3.第三个for循环:利用循环依次输出蚂渣悄排序后的数组,每输出一个加一个空格以便于区分。
(5)c语言使用冒泡法进行升序扩展阅读:
冒泡排序法,从数组头部开始,不断比较相邻的两个元素的大小,通过交换两个元素的值使较大的元素逐渐往后移动,直到数组的末尾。
经过第一轮的比较,就可以找到最大的元素,并将它移动梁燃到最后一个位置。第一轮结束后,继续第二轮。仍然从数组头部开始比较,让较大的元素逐渐往后移动,直到数组的倒数第二个元素为止。
经过第二轮的比较,就可以找到次大的元素,并将它放到倒数第二个位置。
以此类推,进行 n-1(n 为数组长度)轮“冒泡”后,就可以将所有的元素都排列好。
❻ C语言冒泡排序
冒泡排序基本思慧正想
将n个记录看作按纵向排列,每趟排序时自下至上对每对相邻记录进行比较,脊颂若次序不符合要求(逆序)就交换。每趟排序结束时都能使排序范围内关键字最小的记录象一个气泡一样升到表上端的对应位置,整个排序过程共进行n-1趟,依次将关键字最小、次小、第三小的各个记录“冒到”表的第一个、第二个、第三个位置上。
初态 第1趟 第2趟 第3趟樱碧郑 第4趟 第5趟 第6趟 第7趟
38
12
12
12
12
12
12
12
20
38
20
20
20
20
20
20
46
20
38
25
25
25
25
25
38
46
25
38
38
38
38
38
74
38
46
38
38
38
38
38
91
74
38
46
46
46
46
46
12
91
74
74
74
74
74
74
25
25
91
91
91
91
91
91
/*
Title: 冒泡排序
Author: Li Aimin
Date: May 2007
算法功能:冒泡排序算法实现将一个长度为n的线性表r上的所有元素按关键字升序排列。
*/
#includestdio.h
void bubblesort(int r[],int n)
{ /*elements are stored in r[1] to r[n]*/
int i,j,flag;
int temp;
flag=1;
i=1;
while((in)(flag==1)) /*外循环控制排序的总趟数*/
{ flag=0;
for(j=n;ji;j--) /*内循环控制一趟排序的进行*/
if(r[j]r[j-1]) /*相邻元素进行比较,若逆序就交换*/
{
flag=1;
temp=r[j];
r[j]=r[j-1];
r[j-1]=temp;
}
i++;
}
} /*bubblesort*/
void show(int r[] , int n)
{
/*elements are stored in r[1] to r[n]*/
int i;
for(i=1;i=n;i++)
printf(" %d ",r[i]);
printf("
");
}
void main()
{
int a[9201],i;
for(i=0;i9201;i++)
a[i]=9201-i;
//show(a,100000);
bubblesort(a,9200);
show(a,9200);
}
❼ 是用C语言实现如下功能:从键盘输入8个整数,使用冒泡排序法把他们升序输出。
#include “stdio.h”
main()
{int a[8];
int j,i;
for(i=0;i<8;i++)
{ printf(“请输入第%d个数:\n”,i+1);
scanf(“%d”,&a[i]);
}
for(j=1;j<9;j++)
for(i=0;i<8–j;i++)
{if(a[i]>a[i+1]) a[i+1]=a[i];
}
for(i=0;i<8;i++)
printf("\n排序后的结果是:%d\n",a[i]);
return 0;
}