本篇文章给大家谈谈c语言对数组排序,以及c语言对数组进行排序对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言数组排列怎么做?2、C语言中怎么对数组随机排序?3、c语言数组的排序4、求C语言将数组元素大小排序!!
C语言数组排列怎么做?
对n个数排序,先输入n,再输入n个数。
选择排序
#includestdio.h
int main()
{
int a[100];
int i,j,t,p,n;
while (~scanf(“%d”,n))
{
for (i=0;in;i++)
scanf(“%d”,a[i]);
for (i=0;in-1;i++)
{
p=i;
for (j=i+1;jn;j++)
if (a[p]a[j])
p=j;
if (p!=j)
{
t=a[p];a[p]=a[i];a[i]=t;
}
}
for (i=0;in;i++)
if (i!=n-1)
printf(“%d “,a[i]);
else
printf(“%d\n”,a[i]);
}
return 0;
}
冒泡排序
#includestdio.h
int main()
{
int i,j,t,n;int a[1000];
scanf(“%d”,n);
for(i=0;in;i++)
scanf(“%d”,a[i]);
for(j=0;j(n-1);j++)
for(i=0;i(n-1)-j;i++)
if(a[i]a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
for(i=0;in;i++)
{
if (i!=n-1)
printf(“%d “,a[i]);
else
printf(“%d\n”,a[i]);
}
return 0;
}
C语言中怎么对数组随机排序?
可以用一个辅助数组进行随机排序,方法如下:
1 获取要排序的数组长度L。
2 定义整型的辅助数组,长度为L。
3 生成L个随机整型数字,存与辅助数组中,这样要排序数组和辅助数组就是一一对应的了。
4 对辅助数组排序,排序过程中,当改变辅助数组中数字的位置时,同步改变要随机排序的原数组中对应的元素位置。比如为排序交换辅助数组的第三个和第五个元素,那么就要同时交换原数组中的第三个和第五个元素。
5 当辅助数组排序完成后,原数组中的值就是随机顺序了。
6 删除辅助数组。
c语言数组的排序
可以采用冒泡排序的方法。以下给题主一个对既定数组进行升序、降序排序的代码
#include stdio.h
#include time.h
#define elemType int /*元素类型*/
#define LEN 100 /*数组长度上限*/
#define ASC 0 /*升序*/
#define DESC 1 /*降序*/
/*冒泡排序*/
/*参数说明:*/
/*elemType arr[]:排序目标数组*/
/*int len:元素个数*/
/*int order:排序方式;升序(由小到大):ASC;降序(由大到小):DESC*/
void bubbleSort (elemType arr[], int len, int order) {
int i, 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;
}
}
else if (order == DESC) { /*降序*/
if (arr[j] arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
/*打印数组*/
void printArr (elemType arr[], int len) {
int i;
for (i=0; ilen; i++)
printf (“%d\t”,arr[i]);
putchar (‘\n’);
}
int main (void) {
elemType arr[LEN] = {3,5,1,7,2,9,6,8,10,4};
int len;
len = 10;
puts (“初始数组:”);
printArr (arr,len);
putchar (‘\n’);
puts (“升序排列:”);
bubbleSort (arr, len, ASC); /*升序冒泡排序*/
printArr (arr,len);
putchar (‘\n’);
puts (“降序排列:”);
bubbleSort (arr, len, DESC); /*降序冒泡排序*/
printArr (arr,len);
putchar (‘\n’);
getch (); /*屏幕暂留*/
return 0;
}
运行结果
求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; i10-1; i++){
isSorted = 1; //假设剩下的元素已经排序好了
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; //一旦需要交换数组元素,就说明剩下的元素没有排序好
}
}
if(isSorted) break; //如果没有发生交换,说明剩下的元素已经排序好了
}
for(i=0; i10; i++){
printf(“%d “, nums[i]);
}
printf(“\n”);
return 0;
}
扩展资料:
其他将数组从小到大排序的算法
以下使用的是选择排序法实现数组从小到大排序。
思想:从第一个数开始,每次和后面剩余的数进行比较,若升序,则如果后边的数比当前数字小,进行交换,和后面的所有的数比较、交换后,就会将当前的最小值放在当前的位置
输入的序列为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;in;++i)
scanf(“%d”,a+i);
//接下来进行排序
for(i=0;in-1;++i)//因为每次需要和a[i]后面的数进行比较,所以到a[n-2](倒数第2个元素)就行
{
for(j=i+1;jn;++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;jn;++j)
printf(“%-5d”,a[j]);
printf(“\n\n”);
}
return 0;
}
c语言对数组排序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言对数组进行排序、c语言对数组排序的信息别忘了在本站进行查找喔。