首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-09-14 
面试100题之21与特定元素交换的排序算法题目描述:长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数

面试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);}}


热点排行