❶ 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;
}