首页 > 新疆 > 克拉玛依 > c语言数组排序,c语言中的数组排序

c语言数组排序,c语言中的数组排序

来源:整理 时间:2023-05-13 12:23:29 编辑:好学习 手机版

本文目录一览

1,c语言中的数组排序

#include#include int numSort(int *a,int count_num) for(j=count_num-1;j>0;j--) for(i=j-1;i>=0;i--) if(a[j] > a[i]) min=i; j=0; break; } if(min==-1) return 0; for(i=min+1;i for(j=i+1;j if(a[j] < a[i]) a[i]=a[j]; a[j]=temp; } return 1;}void main() int i,j,count_num; printf("个数:"); scanf("%d",&count_num); a=(int *)malloc(sizeof(int)*count_num); for(j=0;j scanf("%d",a+j); } if(numSort(a,count_num)) for(i=0;i printf("%d ",a[i]); } else printf("\n不满足条件");}
int i=n-1, j, temp;for (; i>0; --i) if (a[i] < a[i+1]) break;}for (j=1; i+j < n-j; ++j) temp = a[i+j]; a[i+j] = a[n-j]; a[n-j] = temp;}for (j=i+1; j if ( a[j] > a[i]) temp = a[j]; a[j] = a[i]; a[i] = temp; break; }}
楼上速度好快 我刚有思路 你都写好了 楼上 如果题目给的数组元素换下顺序 你的就求不出来了

c语言中的数组排序

2,C语言数组排序

这是倒序,不是排序。下面代码运行结果:输入n: 6输入6个数: 12 15 29 38 220 44倒序后: 44 220 38 29 15 12 #include <stdio.h>#define N 256void inverse(int *in, int *out, int n) int i; for(i = 0; i < n; i ++) out[i] = in[n-1-i]; }}int main() int in[N]; int out[N]; int n = 0; int i = 0; printf("输入n: "); scanf("%d", &n); if(n > N) n = N; printf("输入%d个数: ", n); for(i = 0; i < n; i ++) if(scanf("%d", in+i)!=1) break; } n = i; inverse(in, out, n); printf("倒序后: "); for(i = 0; i < n; i ++) printf("%d ", out[i]); } printf("\n"); return 0;}
/* 写好了,冒泡排序 然后用变量定义数组 很好理解,你看看吧 如果有啥问题追问一下 哇,写完了 我飘~ */ #include #include int main(void) { long box=0l; int n=0, i1=0, i2=0; printf("输入数组元素个数:4"); scanf("%d",&n); long array[n]; for(i1=0;i1",i1+1); scanf("%d",&array[i1]); } for(i1=0;i10;i1--,i2++) printf("%3d>%d\n",i2,array[i1]); getch(); return 0; }
用链表吧 回去帮你写
简单啊,说白了就是找“最大值”和“最小值”,然后分别用变量存起来,再进行数组元素的移位即可。当然数据结构用“链表”也可以,但都差不多......................还不如自己一个可变长数组。
void paixu(double a[],int N)double temp;int i,j; for(i=0;i<N;i++) for(j=i+1;j<N;j++) if(a[i]>a[j]) }}
这个不是排序,而是逆序输出,没学过链表用自动增长的栈来实现好了,只要内存够大,可以输入任意个整数:#include <stdio.h>#include <stdlib.h>#include <string.h>#define INC_SIZE 5 /* 每次栈自动增长的大小 *//* 栈结构 */typedef struct INTEGER_STACK int* value; int size; /* 栈大小 */ int pos; /* 栈顶位置 */} Stack;/* 初始化栈 */void initialize(Stack* s) if (s->size <= 0) s->size = INC_SIZE; s->value = (int*)malloc(sizeof(int) * s->size); /* TODO: error check */ s->pos = -1;}/* 销毁 */void destroy(Stack* s) free(s->value); s->value = NULL; s->size = 0;}/* 扩充栈 */void expand(Stack* s, int new_size) if (new_size > s->size) s->value = (int*)realloc(s->value, sizeof(int) * new_size); /* TODO: error check */ s->size = new_size; }}/* 入栈 */void push(Stack* s, int i) if (s->pos >= s->size - 1) expand(s, s->size + INC_SIZE); s->value[++(s->pos)] = i;}/* 出栈 */int* pop(Stack* s) if (s->pos >= 0) return &(s->value[s->pos--]); else return NULL;}/* 是否为空栈 */int is_empty(Stack* s) return s->pos < 0;}/* 测试程序 */int main() Stack stack; stack.size = 5; initialize(&stack); /* 输入数组 */ printf("输入整数数组,每行一个整数, 用 end 结束:\n"); while (1) char buf[128]; scanf("%s", buf); if (strcmp(buf, "end") == 0) break; else push(&stack, atoi(buf)); } printf("\n"); /* 逆序输出 */ do int* i = pop(&stack); if (i == NULL) break; printf("%d", *i); if (!is_empty(&stack)) printf(" "); } while (1); destroy(&stack); return 0;}

C语言数组排序

文章TAG:c语言语言数组数组排序c语言数组排序

最近更新