经典算法回顾

一、quicksort

 1 int partition(int s[], int l, int r)
 2 {
 3     int i = l, j = r;
 4     int x = s[l];
 5     while (i < j)
 6     {
 7         while (s[j] >= x&&i < j)
 8             j--;
 9         if (i < j)
10         {
11             s[i] = s[j];
12             i++;
13         }
14         while (s[i] <= x&&i < j)
15             i++;
16         if (i < j)
17         {
18             s[j] = s[i];
19             j--;
20         }
21     }
22     s[i] = x;
23     return i;
24 }
25 void quicksort(int s[], int l, int r)
26 {
27     if (l < r)
28     {
29         int pos = partition(s, l , r);
30         quicksort(s, l, pos - 1);
31         quicksort(s, pos + 1, r);
32     }
33 }

需要注意的:

每一步都要判断i<j是否成立。

用l和r标识出左右区间。每一次调用l和r都不一样。

ref: http://blog.csdn.net/morewindows/article/details/6684558

时间: 2024-10-28 11:12:07

经典算法回顾的相关文章

经典算法回顾1

本文根据园主一线码农的进程来学习,今后也会自己补充一些,希望能够有所进步public class Main { public static void main(String[] args) { // TODO Auto-generated method stub /* * 公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱 * 用100文钱买100只鸡,其中公鸡,母鸡,小鸡必须有,请问各多少只 */ for(int i = 1; i < 20;i++){ for(int j =1; j < 33;

经典算法-回顾(前十)

关于 曾经的48种经典算法与23种常用设计模式相信都不陌生了,不过好久没看了而且当时看的时候也没有整理出来,现在就慢慢整理出来(后续会慢慢更新,这里只是对经典算法进行整理): 目录: 1.河内之塔_TowersOfHanoi2.费氏数列_Fibonacci3.巴斯卡三角形4.三色棋5.老鼠走迷官16.老鼠走迷官27.骑士走棋盘_KnightTour8.八皇后9.八枚银币10.生命游戏 先来看看基本说明和解法: 1.河内之塔_TowersOfHanoi 说明 河内之塔(Towers of Hano

经典算法回顾2

public class Main1 { static String s1 = "abcd"; static String s2 = "abce"; public static void main(String[] args) { // TODO Auto-generated method stub /* * 字符串相似度 * 概念: * 对于两个字符串A和B,通过基本的增删改将字符串A改成B,或者将B改成A, * 在改变的过程中使用的最小步骤称之为“编辑距离” *

经典算法回顾(PHP)

排序 冒泡排序: 1 function BubbleSort($arr){ 2 for($i=0;$i<count($arr);$i++){ 3 for($j=$i+1;$j<count($arr);$j++){ 4 if($arr[$i]<$arr[$j]){ 5 $temp=$arr[$i]; 6 $arr[$i]=$arr[$j]; 7 $arr[$j]=$temp; 8 } 9 } 10 } 11 return $arr; 12 } 快速排序: $arr=[3,5,1,3,7,8

数据挖掘十大经典算法

一. C4.5  C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3 算法.   C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进: 1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足: 2) 在树构造过程中进行剪枝: 3) 能够完成对连续属性的离散化处理: 4) 能够对不完整数据进行处理. C4.5算法有如下优点:产生的分类规则易于理解,准确率较高.其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导

动态展示十大经典算法

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序n个项目要Ο(nlogn)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divideandconquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1.从数列中挑出一个元素,称为“基准”(pivot),

数据挖掘领域十大经典算法初探

译者:July   二零一一年一月十五日 ----------------------------------------- 参考文献:国际权威的学术组织ICDM,于06年12月年评选出的数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.==============博主说明:1.原文献非最新文章,只是本人向来对算法比较敏感.感兴趣,便把原文细看了下,翻译过程中

【白话经典算法系列之十七】 数组中只出现一次的数 其他三次

本文地址:http://blog.csdn.net/morewindows/article/details/12684497转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/MoreWindows 首先看看题目要求: 数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次.请给出最快的方法找到x. 这个题目非常有意思,在本人博客中有<位操作基础篇之位操作全面总结>这篇文章介绍了使用位操作的异或来解决——数组中其他数字出现二次,而x出现一次,找出x.有<

三白话经典算法系列 Shell排序实现

山是包插入的精髓排序排序.这种方法,也被称为窄增量排序,因为DL.Shell至1959提出命名. 该方法的基本思想是:先将整个待排元素序列切割成若干个子序列(由相隔某个"增量"的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序. 由于直接插入排序在元素基本有序的情况下(接近最好情况),效率是非常高的,因此希尔排序在时间效率上比前两种方法有较大提高. 以n=10的一个数组49, 38, 65, 97