


























/*
选择排序
找出最小的元素,与第一个元素对换
再在剩下的元素中找出最小的与第二个对换
*/
#include
"getData.h"void Selection(int *array)/*
快速排序
选择一个枢轴,将枢轴两边的队列排序
递归此步骤,直到整个数列有序
*/
#include "getData.h"
int CountFlag = 0;
/*
从小到大排序
假设枢轴M,设置F指向低位,H指向高位
1。从高位开始扫描直到低位找出第一个小于枢轴的值和低位交换
2。从低位开始扫描直到高位找出第一个大于枢轴的值和高位交换
3。循环1,2直到有序
*/
int GetRan(int* array,int flow,int high)
{
int i=flow,j=high;
int ran;
int ranData;
//用随机数产生枢轴
srand((unsigned)time(NULL));
ran = flow+rand()%(high-flow+1);
ranData = array[ran];array[ran] = array[i];/*
//用最低位数产生枢轴
ran = i;
ranData = array[ran];
*/while(i<j)
{
while(j>i&&array[j]>ranData)j--;
array[i] = array[j];
while(i<j&&array[i]<ranData)i++;
array[j] = array[i];
}
array[j] = ranData;
return j;
}
void Quick(int* array,int low,int high)
{
int ran;
if(low<high)
{
ran = GetRan(array,low,high);
Quick(array,low,ran-1);
Quick(array,ran+1,high);
CountFlag++;
}
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。