当前位置:首页 » 编程语言 » 对一个数组进行排序C语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

对一个数组进行排序C语言

发布时间: 2023-02-28 08:46:50

A. c语言数组的排序

可以采用冒泡排序的方法。以下给题主一个对既定数组进行升序、降序排序的代码

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

#defineelemTypeint/*元素类型*/
#defineLEN100/*数组长度上限*/

#defineASC0/*升序*/
#defineDESC1/*降序*/

/*冒泡排序*/
/*参数说明:*/
/*elemTypearr[]:排序目标数组*/
/*intlen:元素个数*/
/*intorder:排序方式;升序(由小到大):ASC;降序(由大到小):DESC*/
voidbubbleSort(elemTypearr[],intlen,intorder){
inti,j,temp;

for(i=0;i<len-1;i++)
for(j=0;j<len-1-i;j++){
if(order==ASC){/*升序*/
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
elseif(order==DESC){/*降序*/
if(arr[j]<arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}

/*打印数组*/
voidprintArr(elemTypearr[],intlen){
inti;
for(i=0;i<len;i++)
printf("%d ",arr[i]);
putchar(' ');
}

intmain(void){
elemTypearr[LEN]={3,5,1,7,2,9,6,8,10,4};
intlen;

len=10;

puts("初始数组:");
printArr(arr,len);
putchar(' ');

puts("升序排列:");
bubbleSort(arr,len,ASC);/*升序冒泡排序*/
printArr(arr,len);
putchar(' ');

puts("降序排列:");
bubbleSort(arr,len,DESC);/*降序冒泡排序*/
printArr(arr,len);
putchar(' ');

getch();/*屏幕暂留*/
return0;
}

运行结果

B. C语言:用递归的方式对数组排序:

#include<stdio.h>
#defineN100
voidselection_sort(inta[],intlen);
intmain()
{
inta[N],i=0,len;
while(scanf("%d",&a[i])==1)
{
i++;
}
len=i;
selection_sort(a,len);
for(i=0;i<len;i++)
{
if(i==0)
printf("%d",a[i]);
else
printf("%d",a[i]);
}
printf(" ");
return0;
}
voidselection_sort(inta[],intlen)
{inti,j,t;
for(i=j=0;i<len;i++)
if(a[i]>a[j])j=i;
t=a[len-1];a[len-1]=a[j];a[j]=t;
if(len>1)selection_sort(a,len-1);
}

C. 求C语言将数组元素大小排序!!

#include <stdio.h>

int main(){

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

int a,b, text, hello;

for(a=0; a<10-1; a=a+1) { //在这里进行比较的开始的代码

hello = 1; //假如剩下的元素已经被排序好了,然后接着进行下面的比较

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

if(numbers[b] > numbers[b+1]){

text= numbers[b];

numbers[b] = numbers[b+1];

numbers[b+1] = text;

hello= 0;

}

}

if(hello) break;

}

for(a=0; a<10; a=a+1){

printf("%d ", numbers[a]);

}

printf(" ");

return 0;

}

(3)对一个数组进行排序C语言扩展阅读

C语言中数组元素大小的相关排序规则:

一、首先需要对数组中的元素进行排列,默认是以字符串的规则进行从小到大排序;可接收一个参数:自定义的规则相关排序。参数的具体要求如下:

1、参数首先必须是一个函数;

2、函数必须有一个明确的返回值;

3、返回值必须是number类型,但不可以是NaN。

二、排序中的具体规则:

1、首先每次从数组中挑选出两个元素传入函数中,进行比较,直到所有进行排列的元素都被挑选完毕以后就不要再进行挑选;

2、如果返回值是一个正数,就交换这彼此的位置,实现大小的正确排列;

3、如果返回值是一个负数或0,此时说明大小位置的顺序是正确的,此时就不需要交换彼此的位置。

4、默认同一字符的全角字符看做半角字符。不区分同一个字符(如日文的片假字)的半角与全角状态。相同元素,维持原序,默认区分字母大小写,同一个字符小写在前,大写在后。

注意:对数组的元素进行排序需要不断比较两个数字的大小,10个元素排序一共需要比较9次,直到所有的元素被都完完全全地被比较一次。

D. 求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;

}

(4)对一个数组进行排序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;

}

E. 编写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;

}

F. c语言对一维数组排序

#include <stdio.h>
int main()
{
int i,j,t,a[11]; //定义变量及数组为基本整型
printf("请输入10个数:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]); //从键盘中输入10个数
for(i=1;i<10;i++) //变量i代表比较的趟数
for(j=1;j<10-i;j++) //变最j代表每趟两两比较的次数
if(a[j]>a[j+1])
{
t=a[j]; //利用中间变量实现两值互换
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后的顺序是:\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]); //将冒泡排序后的顺序输出
printf("\n");
return 0;
}

G. C语言中怎么对数组随机排序

可以用一个辅助数组进行随机排序,方法如下:

1 获取要排序的数组长度L。
2 定义整型的辅助数组,长度为L。
3 生成L个随机整型数字,存与辅助数组中,这样要排序数组和辅助数组就是一一对应的了。
4 对辅助数组排序,排序过程中,当改变辅助数组中数字的位置时,同步改变要随机排序的原数组中对应的元素位置。比如为排序交换辅助数组的第三个和第五个元素,那么就要同时交换原数组中的第三个和第五个元素。
5 当辅助数组排序完成后,原数组中的值就是随机顺序了。
6 删除辅助数组。

H. 用C语言如何将一个一维数组中的元素随机排序

#include

#include

#include

intmain()

{

inti,j,n,k,t,a[100];

srand((unsigned)time(NULL));

<p

利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换。

运行的结果:

#include

#include

intmain()

{

int&nbs

利用rand()函数产生随机数字,rand()%n产生小于n的随机数,然后交换。

(8)对一个数组进行排序C语言扩展阅读

C语言排序法

在一层循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位。

这样只能排好一个元素,于是需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。

I. C语言一维数组排序

今天为嘛总是见到最后这句话……
初学者……冒泡呗,两个数据都冒。两个for循环,两趟比较,每趟把最大的放最前面(或者最小的放最后面,我感觉都一样)交换的时候,把两个都同时交换了就好……

J. C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的进行排序

#include<stdio.h>

intmain()

{

inti=0;

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

intj=0;

inttmp=0;

intm=sizeof(a)/sizeof(a[0]);//s数组大小

for(i=0;i<m-1;i++)//比较m-1次

{

for(j=0;j<m-i-1;j++)//最后一次比较a[m-i-1]与a[m-i-2]

{

if(a[j]>a[j+1])//如果a[j]比a[j+1]大则交换内容

{

tmp=a[j+1];

a[j+1]=a[j];

a[j]=tmp;

}

}

}

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

{

printf("%d",a[i]);//打印

}

printf(" ");

return0;

}

(10)对一个数组进行排序C语言扩展阅读

C语言排序法

把一个数组进行排序可以使用选择排序法。选择排序法的原理在是每一趟循环寻找数组中最小的数的下标,然后按照递增的顺序放入数组中。

循环找出最小数的下标,该下标用min保存,直到比较完整个数组,即可找到最小的数,然后将该数放入数组的第一位,这样就排好了一个元素。

需要再嵌套一层外层循环即可排好所有元素。第二次循环就不用再比较第一个元素了,因为第一个元素已经排好,依次类推,每一次循环就会排好一个,进行n-1次循环即可排好所有元素。