10-排序6 Sort with Swap(0, i) (25分)
2017-05-29 15:13
429 查看
//表排序 /* 题意:给定N个数字的排列,利用与0的交换来排序,引理: N个数字的排列有若干个独立的环组成,环分为三种: 1.只含一个元素:无需交换 2.环中有0:只需n-1次交换 3.环中无0:需要先把0换到环中,在进行n+1次交换 */ #include <stdio.h> #define maxn 100005 int a[maxn], table[maxn]; int main() { int N, temp = 0, x = 0, ans = 0; int i, j, cnt = 0, flag = 0; scanf("%d", &N); for(i = 0; i < N; i++) { scanf("%d", &a[i]); table[a[i]] = i; } for(i = 0; i < N; i++, cnt = 0) { if(table[i] != i) { j = i; temp = a[i]; } while(table[j] != j) { if(a[j] == 0) flag = 1; x = j; j = table[j]; a[x] = a[j]; table[x] = x; cnt++; } a[x] = temp; if(cnt) { if(flag) { ans += cnt-1; flag = 0; } else ans += cnt+1; } } printf("%d\n", ans); }
相关文章推荐
- 10-排序6 Sort with Swap(0, i) (25分)
- 10-排序6 Sort with Swap(0, i) (25分)
- 10-排序6 Sort with Swap(0, i)
- 10-排序6 Sort with Swap(0, i)
- 浙大pat | 牛客网甲级 1025 Sort with Swap(0) (25)排序
- PAT 数据结构 08-排序5. Sort with Swap(0,*) (25)
- 08-排序5. Sort with Swap(0,*) (25)
- 10-排序6 Sort with Swap(0, i) (25分)
- PAT 1067. Sort with Swap(0,*) (25) 整数0到整数N-1的交换排序问题
- PAT 1067. Sort with Swap(0,*) (25)(交换同一个数字给数列排序)
- sortDescriptorWithKey 进行时间排序
- pat 1067 Sort with Swap(0,*) (25)
- PAT (Advanced Level) Practise 1067 Sort with Swap(0,*) (25)
- 1067. Sort with Swap(0,*) (25)
- Scala List的排序函数sortWith
- 1067. Sort with Swap(0,*) (25)
- 1067. Sort with Swap(0,*) (25)
- 1067. Sort with Swap(0,*) (25)
- 1067. Sort with Swap(0,*)
- Hadoop on Mac with IntelliJ IDEA - 10 陆喜恒. Hadoop实战(第2版)6.4.1(Shuffle和排序)Map端 内容整理