c语言输入n个数 ,然后奇数按照升序排列,偶数按降序排列

[复制链接]
查看11 | 回复1 | 2015-10-7 01:44:21 | 显示全部楼层 |阅读模式
用链表进行在线式排序的方法——最快、最有效率的排序方法,比楼上的冒泡排序快好几个数量级,楼上限100个数据,我的程序不限数据量(理论上可达2G个数据进行排序)#include #include #include struct LINK { int n; struct LINK * next;}; typedef struct LINK LNK;typedef struct LINK * PLNK;#define szLNK sizeof(struct LINK)void print(PLNK x){ PLNK y = x; while(y) {printf("%d ", y->n );y = y->next; } printf("\n");}int existed(PLNK root, int m){ PLNK y = root; while(y) {if (y->n == m) return 1;y = y->next; } return 0;}PLNK insert(PLNK root, int m, int (*cmp)(int, int)){ if(existed(root, m)) return root; PLNK x = (PLNK)malloc(szLNK); memset(x, 0, szLNK); x->n = m; if (!root) return x; PLNK y = root; if (cmp(m, y->n)) {x->next = y;return x; } while(y) {if (cmp(m, y->n)) { x->next = y->next; y->next = x; return root;}if (!y->next) break;y = y->next; } y->next = x; return root;}int greater(int a, int b) { return a>b; }int smaller(int a, int b) { return a#define MAX 100void swap(int*a,int*b){ int t=*a; *a=*b; *b=t;}int main(){ int i,j; int a[MAX]; int n; scanf("%d",&n); for(i=0;ia[j])swap(&a,&a[j]);} for(i=0;i<n;i++)printf("%d ",a); printf("\n"); return 0;}
回复

使用道具 举报

千问 | 2015-10-7 01:44:21 | 显示全部楼层
写个if条件句然后用冒泡排序希望能帮到你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行