㈠ c语言冒泡排序函数
这是优化后的算法,如果数组已有序,则没有执行到 tag=1;所以退出循环,避免做无用功
㈡ 1. 编写冒泡排序和选择排序的程序,主函数中编写菜单调用排序函数。C语言
//C语言示例代码如下
#include<stdio.h>
#defineN10
//冒泡排序(升序)
voidbubble_sort(inta[],intn)
{
inti,j;//j表示趟数,i表示第j趟两两比较的次数
inttmp;//临时变量
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
//选择排序算法,按从小到大顺序
voidselect_sort(int*array,intn)
{
inti,j,k;
inttmp;
for(i=0;i<n-1;i++)
{
k=i;//开始一趟选择排序,假定第i个元素是后面n-i+1个未排序的元素中最小的元素
for(j=i+1;j<n;j++)
{
if(array[k]>array[j])//如果发现比当前最小元素还小的元素,则更新记录最小元素的下标k
k=j;
}
//如果最小元素的下标不是后面n-i+1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最小元素的位置
if(k!=i)
{
tmp=array[k];
array[k]=array[i];
array[i]=tmp;
}
}
}
intmain()
{
intarr[N];
inti;
printf("输入数组元素:");
for(i=0;i<N;i++)
scanf("%d",&arr[i]);
bubble_sort(arr,N);//调用冒泡排序函数
printf("输出排序后的数组元素:");
for(i=0;i<N;i++)
printf("%d",arr[i]);
printf(" 输入数组元素:");
for(i=0;i<N;i++)
scanf("%d",&arr[i]);
select_sort(arr,N);//调用选择排序函数
printf("输出排序后的数组元素:");
for(i=0;i<N;i++)
printf("%d",arr[i]);
printf(" ");
return0;
}
㈢ C语言编程——冒泡排序法,要求:由主函数调用排序子函数,对n个整数进行从小到大的排序,谢了
#include <stdio.h>
#define MAXE 20 //线性表中最多元素个数
typedef int KeyType;
typedef char InfoType[10];
typedef struct //记录类型
{
KeyType key; //关键字项
InfoType data; //其他数据项,类型为InfoType
} RecType;
void BubbleSort(RecType R[],int n) //冒泡排序算法
{
int i,j,k;
RecType temp;
for (i=0;i<n-1;i++)
{
for (j=n-1;j>i;j--) //比较,找出本趟最小关键字的记录
if (R[j].key<R[j-1].key)
{
temp=R[j];
//R[j]与R[j-1]进行交换,将最小关键字记录前移
R[j]=R[j-1];
R[j-1]=temp;
}
printf(" i=%d ",i); //输出每一趟的排序结果
for (k=0;k<n;k++)
printf("%2d",R[k].key);
printf("\n");
}
}
void main()
{
int i,k,n=10;
KeyType a[]={9,8,7,6,5,4,3,2,1,0};
RecType R[MAXE];
for (i=0;i<n;i++)
R[i].key=a[i];
printf("\n");
printf(" 初始关键字 "); //输出初始关键字序列
for (k=0;k<n;k++)
printf("%2d",R[k].key);
printf("\n");
BubbleSort(R,n);
printf(" 最后结果 "); //输出初始关键字序列
for (k=0;k<n;k++)
printf("%2d",R[k].key);
printf("\n\n");
}
数字你可以自己改
㈣ c语言应用函数调用对n个数冒泡排序实现升序排列的程序编写
#include<stdio.h>
int fun(int *a,int n);
int main(void)
{ int a[30],n,i;
printf("n=");
scanf("%d",&n); /*输入参与排序的数字的个数n*/
for(i=0;i<n;i++)
{ printf("a[%d]=",i);
scanf("%d",&a[i]); /*依次输入这n个数*/
}
fun(a,n); /*调用自定义函数进行冒泡排序*/
for(i=0;i<n;i++) /*输出排序后的结果*/
printf("%d ",a[i]);
printf("\n");
}
int fun(int *a,int n)
{ int i,j,t;
for(i=0;i<n-1;i++) /*冒泡排序*/
for(j=0;j<n-1;j++)
if(a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t; }
/*如果后面的数小于前面的数,则将他俩交换次序*/
}
㈤ C语言踢 用一个函数来实现对任意n个数进行冒泡排序,由主函数进行调用并输出排序结果。
主要语句段
voidsort();
{inti,j,temp;
inta[10];
for(i=0;i<10;i++)
scanf("%d,",&a[i]);
for(j=0;j<=9;j++)
{for(i=0;i<10-j;i++)
if(a[i]>a[i+1])
{temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
然后你在主程序中调用就可以了
㈥ 用C语言编写冒泡排序,要求调用子函数,并改变原函数中数组序列。
================================================
功能:冒泡排序
输入:数组名称(也就是数组首地址)、数组中元素个数
================================================
*/
/*
====================================================
算法思想简单描述:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上
而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较
小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要
求相反时,就将它们互换。
下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的
位置k,这样可以减少外层循环扫描的次数。
冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]
=====================================================
*/
void bubble_sort(int x[], int n)
{
int j, k, h, t;
for (h=n-1; h>0; h=k) /*循环到没有比较范围*/
{
for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
{
if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
{
t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /*完成交换*/
k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
}
}
}
}
㈦ c语言用函数的方法,写一个数组复用的冒泡排序程序
#include<stdio.h>
void sort(int *a,int len)
{
int i=len-1,j;
for(;i>=0;i++)
{
for(j=0;j<i;j++)
if(a[j]>a[j+1])
{
a[j]=a[j]+a[j+1];
a[j+1]=a[j]-a[j+1];
a[j]=a[j]-a[j+1];
}
}
}
int main()
{
int i=0;
int a[]={1,2,3,9,8,7,5,4};
sort(a,8);
for(;i<8;i++)
printf("%d ",a[i]);
return 0;
}
㈧ C语言将冒泡排序(或选择排序)改造成函数,实现对一个一维数组中的元素进行排序
我感觉应该把函数原型改成 int *sort(int a[],int n) 会更好些呢?
我的思路是:1.在函数中在定义一个个数为n的数组。2.将所要排序的数组拷贝到这个数组中。3.排序。4.将排好的数组返回
㈨ c语言应用函数调用对10个数冒泡排序实现升序排列的程序编写要用调用函数编写 跪求高手指教
#include<stdio.h>
void sort(int a[], int size)
{
int i,j;
for(i=0;i<size-1;i++)
for(j=0;j<size-i-1;j++)
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
} }
main()
{ int i,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
} 函数sort实现冒泡排序
㈩ C语言 用一个函数来实现对10个数进行冒泡排序
#include"stdio.h"
intexchange(chara[10])//char
{inti,j,t;
for(i=0;i<10;i++)
for(j=0;j<9-i;j++)
if(a[j]<a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
return(1);
}
voidmain()
{
chara[10];//char
printf("pleaseputnumbers:");
scanf("%s",a);
exchange(a);
printf("%s",a);
}
你是对10个字符串排序把