當前位置:首頁 » 編程語言 » 一百個數組元素排列c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

一百個數組元素排列c語言

發布時間: 2022-04-30 09:23:39

c語言 數組元素行排序

#include <stdio.h>
#include <conio.h>
int compositor(int b[4]);
void main()
{
int a[2][4]={{2,5,3,7,},{11,9,16,8}};

int i,j,k;
for(k=0;k<2;k++)
compositor(a[k]);

for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
printf("%-3d",a[i][j]);
printf("\n");}
getch();}
int compositor(int b[4])
{
int i,j,k,temp;
for(i=0;i<3;i++)
{
k=i;
for(j=i+1;j<4;j++)
{if(b[j]>b[k])
k=j;}
if(k!=i)
{ temp=b[i];
b[i]=b[k];
b[k]=temp;
}
}
}

❷ 在C語言中,自定義一個數組,100個元素,對其進行隨機賦值,數值范圍為0~255。要求從小到大排序

代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intmain()
{
intnumbers[100],i,j,temp;

srand(time(NULL));

//產生隨機數
for(i=0;i<100;i++){
numbers[i]=rand()%(255+1);
}

//冒泡法排序
for(i=0;i<(100-1);i++){
for(j=0;j<(100-i-1);j++){
if(numbers[j]>numbers[j+1]){
temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}

//輸出
for(i=0;i<100;i++){
printf("%d",numbers[i]);
}

printf(" ");

system("pause");
return0;
}

❸ C語言,數組排序

min=i; //假設i是最小的
for(j=i+1;j<=8;j++) //遍歷i之後的元素
if(a[min]>a[j]) //還有比a[i]小的元素?
min=j; //有,記住這個元素的編號
temp=a[i]; //下面3行,交換最小的元素和第i個元素,使a[i]是最小的
a[i]=a[min]; //這里你可以判斷一下,如果min==i就不用交換。
a[min]=temp;

❹ C語言(數組排序)

1.選擇排序思想:假定按從大到小排序,比較數組中所有數的大小,挑出最大的元素將其與第一個元素交換位置,然後比較除第一個元素外其他各元素的大小,挑出最大的元素與第二個元素交換位置,依此類推,完成排序。

2.給你解釋開頭的n-2:k=0 to k=n-2,k總共取n-1個元素,當k=n-2時,對應a[n-2]為數組倒數第二個元素,此時i=n-i,a[i]即a[n-1]對應數組最後一個元素,當比較完a[n-2]和a[n-1]並排序後,整個數組就完成了排列。

3.代碼:
for(k=0;k<=n-2;k++)
{
index=k;
for(i=k+1;i<=n-1;i++)
{
if(a[i]<a[index])
{
index=i;
}
}
temp=a[k],a[k]=a[index],a[index]=temp;
}

❺ 編寫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;

}

程序運行結果如下:



(5)一百個數組元素排列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"
void
reverse(int
a[],int
pos,int
n)//把數組a中從下標pos開始的n個數逆置
{
int
*p=a+pos;
int
*q=a+pos+n-1;
while(p<q)
{
int
temp=*p;
*p=*q;;
*q=temp;
p++;q--;
}
}
void
main()
{
int
a[10]={1,2,3,4,5,6,7,8,9,10};
int
pos,n;
int
i;
scanf("%d%d",&pos,&n);
reverse(a,pos,n);
for(i=0;i<10;i++)
printf("%d
",a[i]);
}

❼ 求C語言將數組元素大小排序!!

C語言將數組元素大小排序方法:

以下使用的是冒泡排序法實線數組從小到大排序。

思想:每次相鄰兩個數比較,若升序,則將大的數放到後面,一次循環過後,就會將最大的數放在最後。

10、2、3、4、5、6、9、8、7、1是輸入的待排序的數列,經過第一次排序,將最大的,10放在最後,第二次排序,將剩下的2、3、4、5、6、9、8、7、1進行冒泡,將當前最大的9放在倒數第二的位置,以此類推。

以下是具體代碼:

#include <stdio.h>

int main(){

int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};

int i, j, temp, isSorted;

//優化演算法:最多進行 n-1 輪比較

for(i=0; i<10-1; i++){

isSorted = 1; //假設剩下的元素已經排序好了

for(j=0; j<10-1-i; j++){

if(nums[j] > nums[j+1]){

temp = nums[j];

nums[j] = nums[j+1];

nums[j+1] = temp;

isSorted = 0; //一旦需要交換數組元素,就說明剩下的元素沒有排序好

}

}

if(isSorted) break; //如果沒有發生交換,說明剩下的元素已經排序好了

}

for(i=0; i<10; i++){

printf("%d ", nums[i]);

}

printf(" ");

return 0;

}

(7)一百個數組元素排列c語言擴展閱讀:

其他將數組從小到大排序的演算法

以下使用的是選擇排序法實現數組從小到大排序。

思想:從第一個數開始,每次和後面剩餘的數進行比較,若升序,則如果後邊的數比當前數字小,進行交換,和後面的所有的數比較、交換後,就會將當前的最小值放在當前的位置

輸入的序列為10、2、3、4、5、6、9、8、7、1進行一次排序後將最小的數放在了第一位(a[0]與它後面的所有數進行比較,若a[0]比後面的數大,進行交換),以此類推。

以下是具體代碼:

#include <stdio.h>

int main(void){

int a[1001];

int n,i,j,t;

scanf("%d",&n);//n為要排序的數的個數

//輸入需要排序的數

for(i=0;i<n;++i)

scanf("%d",a+i);

//接下來進行排序

for(i=0;i<n-1;++i)//因為每次需要和a[i]後面的數進行比較,所以到a[n-2](倒數第2個元素)就行

{

for(j=i+1;j<n;++j)//j從i後一個開始,a[i]與a[j]進行比較

{

if(a[i]>a[j])//a[i]為當前值,若是比後面的a[j]大,進行交換

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}//每排序一次,就會將a[i](包括a[i])之後的最小值放在a[i]的位置

for(j=0;j<n;++j)

printf("%-5d",a[j]);

printf(" ");

}

return 0;

}

❽ C語言數組中元素排列問題

#include "stdio.h"
#define len 6
int *function(int *);
int main() {
int a[len]={5,7,4,8,9,1};
for(int i=0;i<len;i++) {
for(int j=0;j<len;j++)
printf("%2d",a[j]);
printf("\n");
function(a);
}
return 0;
}
int *function(int *arr) {
int temp;
int i=len-1;
for(temp=arr[i];i>0;i--)
arr[i]=arr[i-1];
arr[i]=temp;
return arr;
}

編譯通過
為了應付不同的長度的數組我定義了len宏 默認為6

如果你只是要輸出,用下面這段簡單的程序就可以
#include "stdio.h"
#define len 6
int main() {
int a[len]={5,7,4,8,9,1};
for(int i=len;i>0;i--) {
for(int j=0;j<len;j++)
printf("%2d",a[(j+i)%len]);
printf("\n");
}
return 0;
}
編譯通過

❾ C語言 關於數組排列問題

#define N 20
#include <stdio.h>

void main()
{
int b,c;
int a[20],i,j,t;
for(i=0;i<=17;i++)
scanf("%d",&a[i]);
for(i=0;i<=17;i++)
for(j=0;j<17;j++)
if(a[j+1]<a[j])
{t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
for(i=0;i<=17;i++)
printf("%5d",a[i]);

scanf("%d%d",&b,&c);
a[18]=b;
a[19]=c;

for(i=0;i<20;i++)
for(j=i+1;j<N;j++)
if(a[j]<a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}

for(i=0;i<N;i++)
printf("%d ",a[i]);

//getch();
}

其中第三個for語句j!=17 不然越界了 另外 定義數組時 應該int a[20],如果數組越界 不好使的
如果只是添加兩個數,直接找個合適的地方,把這兩個數「插入」不是更好嗎?呵呵 就好像打理一打錢一樣 ,找個合適的位置插入新收入的兩張紙幣!

❿ C語言 數組元素大小排序

#include <stdio.h>

# define N 100

void fun(int *a,int n)

{

int i,j,max,min,px,pn,t;

for(i=0;i<n-1;i+=2)

{

max=min=a[i];

px=pn=i;

for(j=i+1;j<n;j++)

{

if(max<a[j])

{max=a[j];px=j;}

if(min>a[j])

{min=a[j];pn=j;}

}

if(px!=i)

{

t=a[i];a[i]=max;a[px]=t;

if(pn==i)pn=px;

}

if(pn!=i+1)

{t=a[i+1];a[i+1]=min;a[pn]=t;}

}

}

int main()

{

int b[N]={1,4,2,3,9,6,5,8,7};

int i,u,k;

u=9;

printf("the original array is: ");

for(k=0;k<u;k++)

printf("%4d",b[k]);

printf(" ");

fun(b,u);

printf(" the result is: ");

for(k=0;k<u;k++)

printf("%4d",b[k]);

return 0;

}