首页 > 代码库 > 编程算法 - 将排序数组按绝对值大小排序 代码(C)
编程算法 - 将排序数组按绝对值大小排序 代码(C)
将排序数组按绝对值大小排序 代码(C)
本文地址: http://blog.csdn.net/caroline_wendy
排序的数组有可能包含正负, 可以使用折半查找确定中值位置, 然后再使用两个指针, 顺次排序两端.
解决思路是:
1.数组中的元素全为正,返回;
2.数组中的元素全为负,返回;
3.数组中有正数有负数,就用二分法查找,判断中间元素的符号
a)中间元素为正,继续判断中间元素前面一个元素的符号;
b)中间元素为负,判断中间元素后一个元素的符号;
c)中间元素为零,令其等于结果值返回;
时间复杂度O(nlogn)
代码:
/* * main.cpp * * Created on: 2014.9.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <stdio.h> #include <stdlib.h> using namespace std; void Reverse(int* begin, int* end) { while (begin < end) { int tmp = *begin; *begin++ = *end; *end-- = tmp; } } void AbsoluteSort(int res[], int data[], const int length) { if (data =http://www.mamicode.com/= NULL || length <= 0) {>输出:
0 1 -1 2 -2 -4 -5 6
编程算法 - 将排序数组按绝对值大小排序 代码(C)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。