㈠ 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個字元串排序把