惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
月光博客
月光博客
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
B
Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
Y
Y Combinator Blog
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
B
Blog RSS Feed
V
Visual Studio Blog
MyScale Blog
MyScale Blog

博客园 - ________囧丶殇

django系列 - 安装和新建项目 SQL - 基础 javascript刷新父页面 SQL - 约束 C语言(8) - 反转单向链表 C语言(7) - 数据结构之单向链表 C语言(6) - 各种排序算法的比较 C语言(4) - 插入排序 C语言(3) - 冒泡排序 归并排序 C语言(2) - 从指针开始 C语言(1) - 开始之前 python实践 - 抓取网页中的图片和数据 python实践 - 下载文件 python补充(2) - 内置函数 python补充(1) python笔记(十) - 异常和文件处理 python笔记(九) - 类 part2 python笔记(八) - 类 part1 python笔记(七) - and和or
C语言(5) - 选择排序 快速排序
________囧丶殇 · 2009-06-09 · via 博客园 - ________囧丶殇

/*
选择排序
找出最小的元素,与第一个元素对换
再在剩下的元素中找出最小的与第二个对换
*/

#include 

"getData.h"void Selection(int *array)
{
    
int i=0;
    
while(i<ArraySize-1)
    {
        
int minval  = i;
        
int j ;
        
for(j=i+1;j<ArraySize;j++)
        {
            
if(array[j]<array[minval])
            {
                minval 
= j;
            }
        }
        
if(minval != i)
        {
            
int tmp = array[i];
            array[i] 
= array[minval];
            array[minval] 
= tmp;
        }
        i
++;
    }
}

/*
快速排序
选择一个枢轴,将枢轴两边的队列排序
递归此步骤,直到整个数列有序
*/
#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
++;
    }

}