读书人

口试100题之21与特定元素交换的排序算

发布时间: 2013-09-14 13:03:22 作者: rapoo

面试100题之21与特定元素交换的排序算法
题目描述:长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序( 必须采用交换实现)
思路分析:任何排序算法都可以,主要就是这里对交换的规则有了规定,只要设计出交换函数,所有的问题就可以迎刃而解了。
参考代码:

#include<stdio.h>#include<assert.h>inline void Swap(int &a, int &b){int temp;temp = a;a = b;b = temp;}void Print(int *arr, int nLen){for(int i = 0; i < nLen; ++i){printf("%d ", arr[i]);}printf("\n");}int main(){const int Max_N = 100;int arr[Max_N];int n,i;while(scanf("%d", &n) != EOF){for(i = 0; i < n; ++i){scanf("%d", &arr[i]);}//将数字0,归位到arr[0]的位置for(i = 0; i < n; ++i){if(arr[i] == 0){Swap(arr[i], arr[0]);break;}}QuickSort(&arr[1], n - 1, arr[0]);Print(arr, n);}}


读书人网 >编程

热点推荐