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

推荐订阅源

J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
L
LangChain Blog
C
Check Point Blog
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
Recent Announcements
Recent Announcements
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
Netflix TechBlog - Medium
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
U
Unit 42
The Cloudflare Blog
月光博客
月光博客
有赞技术团队
有赞技术团队
G
Google Developers Blog
Vercel News
Vercel News

博客园 - ________囧丶殇

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
++;
    }

}