枢轴点,翻倍小技巧!

 股票基金     |      2019-11-27 00:56

电竞帮官网 1

javascript快速排序算法详解,javascript排序算法

"快速排序"的思想很简单,整个排序过程只需要三步:

  (1)在数据集之中,找一个基准点

  (2)建立两个数组,分别存储左边和右边的数组

  (3)利用递归进行下次比较

看一个demo:http://jsdo.it/norahiko/oxIy/fullscreen(网页打开可能较慢,慢慢等待吧)

<script type="text/javascript"> 

function quickSort(arr){
  if(arr.length<=1){
    return arr;//如果数组只有一个数,就直接返回;
  }

  var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整
  var numValue = arr.splice(num,1);//找到中间数的值
  var left = [];
  var right = [];

  for(var i=0;i<arr.length;i++){
    if(arr[i]<numValue){
      left.push(arr[i]);//基准点的左边的数传到左边数组
    }
    else{
      right.push(arr[i]);//基准点的右边的数传到右边数组
    }
  }
 return quickSort(left).concat([numValue],quickSort(right));//递归不断重复比较
}
alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”

</script>

最近在期权交易中,测试枢轴点的具体运用方式,近几日的行情表现来看还是不错,几个关键的点位都有起到一定的作用,和朋友们分享一下。

快速排序算法(free pascal)详解,不要源程序,时间复杂度n(logn);谢了//

1、算法思想
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。

(1) 分治法的基本思想
分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。

(2)快速排序的基本思想
设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为:
①分解:
在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1)和 R[pivotpos+1..high],并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记为pivot)的关键字pivot.key,右边的子区间中所有记录的关键字均大于等于pivot.key,而基准记录pivot则位于正确的位置(pivotpos)上,它无须参加后续的排序。
注意:
划分的关键是要求出基准记录所在的位置pivotpos。划分的结果可以简单地表示为(注意pivot=R[pivotpos]):
R[low..pivotpos-1].keys≤R[pivotpos].key≤R[pivotpos+1..high].keys
其中low≤pivotpos≤high。
②求解:
通过递归调用快速排序对左、右子区间R[low..pivotpos-1]和R[pivotpos+1..high]快速排序。
③组合:
因为当"求解"步骤中的两个递归调用结束时,其左、右两个子区间已有序。对快速排序而言,"组合"步骤无须做什么,可看作是空操作。

快速排序的最佳情况是n(log2(n)),差的时候还是要n^2
参考资料:student.zjzk.cn/....1.htm  

首先,什么是枢轴点,枢轴点(Pivot Point)是一套非常“单纯”的阻力支持体系,大概是10年前一个做期货的高手发明的方法,至今已经广泛的用在股票、期货、国债、指数等高成交量的商品上,在T+0的市场中广为流传。经典的Pivot Point是7点系统,就是7个价格组成的,目前广泛使用的13点系统,其实都是一样的,不过是多加了6个价格罢了,用于大成交量的商品,今天要介绍给大家的就是经典的枢轴点系统。

C语言的快速排序法的算法 顺便把变化过程用文字描述一下,简单的数组排序

# include "stdio.h"
typedef int InfoType;//定义数据项类型
# define MAX_SIZE 20//小顺序表的最大长度
typedef int KeyType;//关键字类型为整型
struct RedType //记录类型
{
KeyType key;//关键字项
InfoType otherinfo;//其他数据项
};
struct SqList//顺序表类型
{
RedType r[MAX_SIZE+1];//r[0]闲置或用作哨兵单元
int length;//顺序表长度
};
//交换顺序表L中子表L.r[low...high]的记录,使枢轴记录到位
//并返回其所在位置,此时在它之前(后)的记录均不大(小)于它
int Partition(SqList * L,int low,int high)
{
RedType t;
KeyType pivotkey;
pivotkey = (* L).r[low].key;//用子表的第一个记录作枢轴记录
while (low < high)//从表的两端交替地向中间扫描
{
while (low<high && (* L).r[high].key>=pivotkey)
{
--high;
}
t = (* L).r[low];//将比枢轴记录小的记录交换到低端
(* L).r[low] = (* L).r[high];
(* L).r[high] = t;
while (low<high && (* L).r[low].key<=pivotkey)
{
++low;
}
t = (* L).r[low];//将比枢轴记录大的记录交换到高端
(* L).r[low] = (* L).r[high];
(* L).r[high] = t;
}
return low;//返回枢轴所指位置
}
//对顺序表L中的子序列L.r[low...high]作快速排序
电竞帮官网,void QSort(SqList * L,int low,int high)
{
int pivotloc;
//长度大于1
if (low < high)
{
pivotloc = Partition(L,low,high);//将L.r[low...high]一分为二
QSort(L,low,pivotloc-1);//对低子表递归排序,pivotloc是枢轴位置
QSort(L,pivotloc+1,high);//对高子表递归排序
}
}
//对顺序表L作快速排序
void QuickSort(SqList * L)
{
QSort(L,1,(* L).length);
}
void print(SqList L)
{
int i;
for (i=1; i<=L.length; ++i)
{
printf("(%d,%d)",L.r[i].ke......余下全文>>  

http://www.bkjia.com/Javascript/880935.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javascript/880935.htmlTechArticlejavascript快速排序算法详解,javascript排序算法 "快速排序"的思想很简单,整个排序过程只需要三步: (1)在数据集之中,找一个基准点 (...

这里先建立一个概念:

P= ( H + L + 2C ) / 4 {H代表高价位, L代表低价位, C代表收市价}

这个计算出的P值,是当时的市场绝对均价

下文用到P值公式是变体。

下面的就是原理公式:

pivot:= (high + low + close) / 3;(用前一天的最高、最低和收盘)

r1:= 2*pivot - low;

上一篇:多空机构对撞 游资又抢快钱 下一篇:没有了