有些簡(jiǎn)單的東西不用指針,用了有時(shí)反而會(huì)錯(cuò)
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站開發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。成都創(chuàng)新互聯(lián)公司擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺設(shè)計(jì)專才。
這是我以前寫的
#include?stdio.h
int?main()
{
int?i,j,x[100],y=0,a;
printf("請(qǐng)輸入數(shù)字?jǐn)?shù)量:\n");?
scanf("%d",a);
printf("請(qǐng)輸入各個(gè)數(shù)字:\n");
for(i=0;ia;i++)
{
scanf("%d",x[i]);
}
printf("\n");
//輸入
for(j=1;j=(a-1);j++)
{
for(i=0;i(a-j);i++)
{
if(x[i]x[(i+1)])
{
y=x[(i+1)];
x[(i+1)]=x[i];
x[i]=y;
}
}
}
//冒泡排序
for(i=(a-1);i=0;i--)
{
printf("%d",x[i]);
}
printf("\b\n");
for(i=0;ia;i++)
{
printf("%d",x[i]);
}
printf("\b?");
//輸出
return?0;
}
#include "stdio.h"
int main()
{
int i,j;
int a[12];
for(i=1; i=10; ++i)
scanf("%d",a[i]);
for(i=1; i10; ++i)
for(j=i; j=10; ++j)
if(a[i]a[j])
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
//前十個(gè)數(shù)的排序
for(i=1; i=10; ++i)
printf("%d ",a[i]);
printf("\n");
printf("Input a new number: ");
scanf("%d",a[11]);
for(i=10; i0; --i)
if(a[i+1]a[i])
{
int t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
else break;
//11個(gè)數(shù)的排序
for(i=1;i=11; ++i)
printf("%d ",a[i]);
printf("\n");
return 0;
}
#include?stdio.h
void?func(int?*a)
{
int?i,j,temp;
for(j=0;j=7;j++)?
{?
for?(i=0;i7-j;i++)?
if?(a[i]a[i+1])?
{?
temp=a[i];?
a[i]=a[i+1];?
a[i+1]=temp;
}?
}?
}
int?main()
{
int?a[8]={8,7,6,5,4,3,2,1};
func(a);
for(int?i=0;i8;i++)
{
printf("%d?",a[i]);
}
return?0;
}
func就是功能函數(shù)實(shí)現(xiàn)數(shù)組a[8]的排序。
C語(yǔ)言將數(shù)組元素大小排序方法:
以下使用的是冒泡排序法實(shí)線數(shù)組從小到大排序。
思想:每次相鄰兩個(gè)數(shù)比較,若升序,則將大的數(shù)放到后面,一次循環(huán)過(guò)后,就會(huì)將最大的數(shù)放在最后。
10、2、3、4、5、6、9、8、7、1是輸入的待排序的數(shù)列,經(jīng)過(guò)第一次排序,將最大的,10放在最后,第二次排序,將剩下的2、3、4、5、6、9、8、7、1進(jìn)行冒泡,將當(dāng)前最大的9放在倒數(shù)第二的位置,以此類推。
以下是具體代碼:
#include stdio.h
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//優(yōu)化算法:最多進(jìn)行 n-1 輪比較
for(i=0; i10-1; i++){
isSorted = 1;? //假設(shè)剩下的元素已經(jīng)排序好了
for(j=0; j10-1-i; j++){
if(nums[j] nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0;? //一旦需要交換數(shù)組元素,就說(shuō)明剩下的元素沒(méi)有排序好
}
}
if(isSorted) break; //如果沒(méi)有發(fā)生交換,說(shuō)明剩下的元素已經(jīng)排序好了
}
for(i=0; i10; i++){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
擴(kuò)展資料:
其他將數(shù)組從小到大排序的算法
以下使用的是選擇排序法實(shí)現(xiàn)數(shù)組從小到大排序。
思想:從第一個(gè)數(shù)開始,每次和后面剩余的數(shù)進(jìn)行比較,若升序,則如果后邊的數(shù)比當(dāng)前數(shù)字小,進(jìn)行交換,和后面的所有的數(shù)比較、交換后,就會(huì)將當(dāng)前的最小值放在當(dāng)前的位置
輸入的序列為10、2、3、4、5、6、9、8、7、1進(jìn)行一次排序后將最小的數(shù)放在了第一位(a[0]與它后面的所有數(shù)進(jìn)行比較,若a[0]比后面的數(shù)大,進(jìn)行交換),以此類推。
以下是具體代碼:
#include stdio.h
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",n);//n為要排序的數(shù)的個(gè)數(shù)
//輸入需要排序的數(shù)
for(i=0;in;++i)
scanf("%d",a+i);
//接下來(lái)進(jìn)行排序
for(i=0;in-1;++i)//因?yàn)槊看涡枰蚢[i]后面的數(shù)進(jìn)行比較,所以到a[n-2](倒數(shù)第2個(gè)元素)就行
{
for(j=i+1;jn;++j)//j從i后一個(gè)開始,a[i]與a[j]進(jìn)行比較
{
if(a[i]a[j])//a[i]為當(dāng)前值,若是比后面的a[j]大,進(jìn)行交換
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就會(huì)將a[i](包括a[i])之后的最小值放在a[i]的位置
for(j=0;jn;++j)
printf("%-5d",a[j]);
printf("\n\n");
}
return 0;
}
#includestdio.h
void?sort(float?*a,?int?n)
{
int?i,j,tmp;
for(i=0;?in-1;?i++)
for(j=0;?jn-i-1;?j++)
if(a[j]a[j+1])
{
tmp?=?a[j];
a[j]?=?a[j+1];
a[j+1]?=?tmp;
}
}
void?main()
{
float?a[5];
int?i;
printf("請(qǐng)輸入五個(gè)數(shù)(逗號(hào)隔開):");
scanf("%f,%f,%f,%f,%f",a[0],a[1],a[2],a[3],a[4]);
sort(a,5);
printf("排序后為:");
for(i=0;?i5;?i++)
printf("%.2f?",a[i]);
printf("\n");
}
或者三個(gè)數(shù)的。
void sort(int *a, int *b, int *c)
{
int tmp;
if(*a*b){
tmp = *b;
*b = *a;
*a = tmp;
}
if(*a*c){
tmp = *c;
*c = *a;
*a = tmp;
}
if(*b*c){
tmp = *c;
*c = *b;
*b = tmp;
}
return;
}
擴(kuò)展資料:
C語(yǔ)言中沒(méi)有預(yù)置的sort函數(shù)。如果在C語(yǔ)言中,遇到有調(diào)用sort函數(shù),就是自定義的一個(gè)函數(shù),功能一般用于排序。
一、可以編寫自己的sort函數(shù)。
如下函數(shù)為將整型數(shù)組從小到大排序。void sort(int *a, int l)//a為數(shù)組地址,l為數(shù)組長(zhǎng)度。
{ ?
int i, j; ?
int v; ? ?//排序主體
for(i = 0; i l - 1; i ++) ? ? ?
for(j = i+1; j l; j ++)
?
{ ? ? ? ? ?
if(a[i] a[j])//如前面的比后面的大,則交換。
? ? ?
{
? ? ? ? ?
v = a[i];
? ? ? ? ?
a[i] = a[j];
? ? ? ? ?
a[j] = v;
? ? ?
}
?
}
}
對(duì)于這樣的自定義sort函數(shù),可以按照定義的規(guī)范來(lái)調(diào)用。
二、C語(yǔ)言有自有的qsort函數(shù)。
功 能: 使用快速排序例程進(jìn)行排序。頭文件:stdlib.h
原型:
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
參數(shù):
1、待排序數(shù)組首地址。
2、數(shù)組中待排序元素?cái)?shù)量。
3、各元素的占用空間大小4 指向函數(shù)的指針,用于確定排序的順序,這個(gè)函數(shù)必須要自己寫比較函數(shù),即使要排序的元素是int,float一類的C語(yǔ)言基礎(chǔ)類型。
includestdio.h
#includestdlib.h
main()
{
int?a[10],i,j,t;
for(i=0;i10;i++)
scanf("%d",a[10]);
for(i=0;i9;i++)
{for(j=0;j9-i;j++)
{
if(a[j]a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
}
for(i=0;i10;i++)
printf("%d?",a[i]);
getch();
}
10個(gè)數(shù)