『壹』 c語言數組排序
#include<stdio.h>
#include<iostream.h>
void main ()
{
printf("請輸入10個整數\n");
int i,j;
float s[10],temp;
for(i=0;i<10;i++)
scanf("%f",&s[i]);
cout<<"原來數組為"<<endl;
for(i=0;i<10;i++)
printf("%.2f ",s[i]);
printf("\n");
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(s[j]>s[i])
{
temp=s[j];
s[j]=s[i];
s[i]=temp;
}
cout<<"改變後的數組為"<<endl;
for(i=0;i<10;i++)
printf("%.2f ",s[i]);
printf("\n");
}
『貳』 用C語言編寫自定義數組,求和,求平均值,求最大值,再排序,求大佬
#include<stdio.h>
#define N 10
void main() { int a[N],i,j,k,s,m; float v;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
s=0; for ( i=0;i<N;i++ ) s+=a[i]; printf("數組元素之和=%d ",s);
v=s; v/=N; printf("數組元素平均值=%f ",v);
m=a[0]; for ( i=1;i<N;i++ ) if ( a[i]>m ) m=a[i]; printf("最大值=%d ",m);
for ( i=0;i<N-1;i++ ) for ( j=i+1;j<N;j++ ) if ( a[i]<a[j] ) {k=a[i];a[i]=a[j];a[j]=k;}
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf(" ");
}
『叄』 C語言自定義函數 數組冒泡排序 返回排序後的數組,怎麼返回一個數組。
通常操作數組的時候,你發送的實參就是數組的首地址;所以直接void類型就可以;但是如果一定要設返回值的話;直接把形參接收的首地址返回就可以了!
你的代碼中,有很大的問題;如果是的代碼中這樣設定要想不出問題,那麼那個數組要在堆中分配;即malloc一塊地址;
其次,int paixu() 改成int *paixu();
再次;return arr;就可以
如果你的程序需要作為介面給別人的,那麼你這個寫法顯然是不對的;因為別人不知道怎麼解析你這個介面返回的地址;知道是數組也不知道數組的元素個數!
再說你這個冒泡排序;也出問題了!j不會遞增,也就是當執行到裡面的循環後就是個死循環!
『肆』 C語言(數組排序)
#include<stdio.h>
void main()
{
int a[10]={45,6,3,86,43,45,12,56,34,76},k,n,i,index,b;
n=10;//數組定義了有10個,這樣寫好對照你的圖來看
for(k=0;k<=n-2;k++)
/*選折排序只用排到倒數第二位就行了,所以-1,然後你這寫的是to,
也就是<=,數組大小變下標-1,相加所以就是-2,
當然如果寫的是k<的話就是k<n-1了*/
{
index=k;
for(i=k+1;i<=n-1;i++)
{
if(a[i]<a[index])
index=i;
}
b=a[index];
a[index]=a[k];
a[k]=b;
}
for(k=0;k<=n-1;k++)
printf("%d\n",a[k]);
}
『伍』 C語言數組排序方法
選擇排序的原理是,每次從待排序數字中挑選出最大(最小)數字,放在有序序列的末尾。實際操作中,只需要在這個數組中將挑出來的數字與前面的數字交換即可。例如:4
1 5
2 3找到最小的1,1和4交換1
4 5
2
3找到最小的2,2和4交換1
2
5
4
3找到最小的3,3和5交換1
2
3
4
5找到最小的4,4和4交換(不交換也可)可見,選擇排序需要一個雙重循環來完成,因此它的復雜度是O(n^2)在數據量比較大時,不建議使用這種排序方法。 其他排序方法有很多,你甚至可以自己根據不同數據規模設計不同的排序方法。比較常見的有冒泡排序,插入排序(這兩種和選擇排序一樣,都是O(n^2)),二分法插入排序(降低了一些復雜度,但是涉及到大規模數據移動,效率依然不高),快速排序(平均復雜度O(nlogn),但是不穩定,最壞情況O(n^2)),隨機化快速排序(很大程度上避免了最壞情況的出現),堆排序(O(nlogn),編程復雜度高),基數排序(理論復雜度O(n),實際要比這個慢。甚至能應付字元串排序,但是編程復雜度高,牽扯到其他數據結構),桶排序(O(n),編程簡單,效率高,但是應付的數據范圍不能太大,受到內存大小的限制)。 平時比較常用的就是快速排序,程序簡單,效率也可以接受。 這是我了解的一些東西,希望對你有幫助。
『陸』 用c語言數組定義5個數使用冒泡排序 從小到大
#include<stdio.h>
intBubbleSort(inta[],intlen)
{
inti,j,temp,CompareNum=0;
for(i=0;i<len-1;i++)//最多需len-1趟排序
for(j=0;j<len-i-1;j++)//每趟排序最多需要len-i-1次比較
{
if(a[j]>a[j+1])//將較大的值放到後面
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
CompareNum++;//比較次數加1
}
returnCompareNum;
}
voidmain()
{
inti;
inta[]={12,5,23,6,2};
BubbleSort(a,5);//5表示數組長度
for(i=0;i<5;i++)
{
printf("%d",a[i]);
}
printf(" ");
}
『柒』 c語言中的數組排序
#include<stdio.h>
#include<windows.h>
int numSort(int *a,int count_num)
{ int i,j,min=-1,temp;
for(j=count_num-1;j>0;j--)
for(i=j-1;i>=0;i--)
if(a[j] > a[i])
{ temp=a[i]; a[i]=a[j]; a[j]=temp;
min=i;
j=0;
break;
}
if(min==-1) return 0;
for(i=min+1;i<count_num-1;i++)
for(j=i+1;j<count_num;j++)
if(a[j] < a[i])
{ temp=a[i];
a[i]=a[j];
a[j]=temp;
}
return 1;
}
void main()
{ int *a;
int i,j,count_num;
printf("個數:");
scanf("%d",&count_num);
a=(int *)malloc(sizeof(int)*count_num);
for(j=0;j<count_num;j++)
{ printf("輸入第%d個數:",j+1);
scanf("%d",a+j);
}
if(numSort(a,count_num))
{ printf("\n排列後:");
for(i=0;i<count_num;i++)
printf("%d ",a[i]);
}
else printf("\n不滿足條件");
}
『捌』 C語言 數組排序
你定義的數組a[11]是11個數,但是你只初始化了0~9,a[10]由於你沒有初始化所以是0
你的排序也把這個0排進去了。
你試試定義那裡寫a[11]=={1,10,20,30,40,50,60,70,80,90,100};就肯定不會有0了
『玖』 編寫C語言程序,把一個數組按從小到大的次序排列起來
源程序以及演算法注釋如下:
#define _CRT_SECURE_NO_WARNINGS//VS編譯環境需要進行宏定義,VC6.0可忽略
#include<stdio.h>//輸入輸出頭文件
int main()
{
int number[10], New_number[10];//定義數組的數據類型為整型
int i, j, m, n, k;//定義變數的數據類型為整型
printf("input 10 <int> number:");//文字提示
for (i = 0; i <= 9; i++)//用循環輸入數值給數組number並賦給數組New_number
{
scanf("%d", &number[i]);//輸入10個整形數字到數組中
New_number[i] = number[i];//數組number元素賦給數組New_number
}
for (n = 0; n <= 8; n++)//要進行(10-1)組比較
for (j = 0; j <= 8 - n; j++)//每組進行(10減第幾組)次比較
{
if (number[j] > number[j + 1])//比較大小並將小的賦給前面的數組
{
k = number[j];//將相對較大的元素賦值給中間元素
number[j] = number[j + 1];//將相對較小的元素送達前面一個位置
number[j + 1] = k;//將中間變數元素送給後面一個位置
}
if (New_number[j] < New_number[j + 1])//比較大小並將大的賦給前面的數組
{
k = New_number[j + 1];//將相對較小的元素賦值給中間元素
New_number[j + 1] = New_number[j];//將相對較大的元素送達前面一個位置
New_number[j] = k;//將中間變數元素送給後面一個位置
}
}
printf("min-->max:
");//文字提示
for (m = 0; m <= 9; m++)//依次從小到大輸出
printf("%d ", number[m]);//輸出元素
printf("
");
printf("max-->min:
");//文字提示
for (m = 0; m <= 9; m++)//依次從大到小輸出
printf("%d ", New_number[m]);//輸出元素
printf("
");
return 0;
}
程序運行結果如下:
(9)c語言自定義數組排序擴展閱讀:
其他簡單實現程序:
#include<stdio.h>
int main()
{
int a[10]={0};
int i,j,temp;
for(i = 0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i = 0;i<10;i++)
{
for(j = 0;j<10-i-1;j++)
{
if(a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i = 0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
『拾』 c語言 定義一個函數,將一個一維數組中數據從小到大排序
#include<stdio.h>
#define N 10
void sortarray(int *a,int n) { int i,j,k;
for ( i=0;i<n-1;i++ ) for ( j=i+1;j<n;j++ ) if ( a[i]>a[j] ) {k=a[i];a[i]=a[j];a[j]=k;}
}
void main() { int a[N],i;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
sortarray(a,N);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}