Click here to Skip to main content
15,894,180 members
Home / Discussions / Algorithms
   

Algorithms

 
AnswerRe: Stable Quicksort algorithm Pin
Stephen Hewitt31-Mar-09 17:11
Stephen Hewitt31-Mar-09 17:11 
GeneralRe: Stable Quicksort algorithm Pin
Member 41945931-Apr-09 17:16
Member 41945931-Apr-09 17:16 
GeneralRe: Stable Quicksort algorithm Pin
supercat93-Apr-09 6:22
supercat93-Apr-09 6:22 
GeneralRe: Stable Quicksort algorithm Pin
Member 41945934-Apr-09 5:58
Member 41945934-Apr-09 5:58 
AnswerRe: Stable Quicksort algorithm [modified] Pin
bulg3-Apr-09 14:15
bulg3-Apr-09 14:15 
GeneralP.s. Pin
bulg3-Apr-09 14:28
bulg3-Apr-09 14:28 
GeneralRe: Stable Quicksort algorithm Pin
Member 41945934-Apr-09 6:36
Member 41945934-Apr-09 6:36 
GeneralRe: Stable Quicksort algorithm Pin
bulg9-Apr-09 11:42
bulg9-Apr-09 11:42 
Hey Dave,

I'm gonna answer the copyright question first: You are protected & free to write or say anything you want *about* Knuth's books, including the contents, as long as you don't do it for profit. If you use it authoritatively, you should also say, "as Knuth wrote in ...", aka, cite it. Otherwise, a million kids across the country turning in book reports with "at least 4 quotes from the book" would be copyright villains.


Here's my lazy quick sort again, this time with better annotation. Still pseudo-code, though:
struct pivot { 
  int l,r;
}; /* the "pivot" struct represents a range in an array */

function partition( array, left, right ) {
  pivot.l = pivot.r = left  /* pivot starts as a range of 1 variable,
                               array[left] */
  for i = left to right 
  {
    if (array[i] >= pivot.l)
      pivot.r += 1          /* increase the range of the pivot */
    else 
      swap_r(pivot,i)       /* swap the entire range with the 
                               next element, to stay stable */
  }
  return pivot.l            /* return the start of the pivot range */
}

swap_r (range, index) {     
/* swaps an index with a range, by going through 
   the entire range one at a time. Probably naive */

  int t=range.r
  while(range.l<=t)
    swap_i(t--,index)
}

swap_i (index1, index2) { 
  /// straight swap, requires a single 
  /// temporary element (or possibly just a pointer)
}

function quicksort(array) { 
  int p = partition(array,0,length-1)
  quicksort(array,0,p)
  quicksort(array,p+1,length-1)
}


This works on paper. I used the values
0 1 4 4 5 4 2 4 2 3 5 3 7 6 7 4
when I did it by hand.

If you wanted to make it like I envisioned lazy quick sort, then you could employ another range for swapping, instead of swapping at the first index that is < pivot.l. I am not convinced this would be faster... but I don't really have time to try it. If you do, please let me know!!

-Ryan
GeneralRe: Stable Quicksort algorithm Pin
Member 41945939-Apr-09 16:51
Member 41945939-Apr-09 16:51 
QuestionVector orientation Question. Pin
Maximilien31-Mar-09 4:59
Maximilien31-Mar-09 4:59 
AnswerRe: Vector orientation Question. Pin
Luc Pattyn31-Mar-09 5:06
sitebuilderLuc Pattyn31-Mar-09 5:06 
GeneralRe: Vector orientation Question. Pin
Maximilien31-Mar-09 5:34
Maximilien31-Mar-09 5:34 
GeneralRe: whatever shape Pin
Luc Pattyn31-Mar-09 5:38
sitebuilderLuc Pattyn31-Mar-09 5:38 
GeneralRe: whatever shape Pin
Maximilien31-Mar-09 5:42
Maximilien31-Mar-09 5:42 
AnswerRe: Vector orientation Question. Pin
73Zeppelin31-Mar-09 5:13
73Zeppelin31-Mar-09 5:13 
AnswerRe: Vector orientation Question. Pin
Tim Craig31-Mar-09 8:26
Tim Craig31-Mar-09 8:26 
AnswerRe: Vector orientation Question. Pin
Roger Wright1-Apr-09 20:06
professionalRoger Wright1-Apr-09 20:06 
QuestionHow To Scramble Numbers On These Tables? [modified] Pin
Feranawati31-Mar-09 3:56
Feranawati31-Mar-09 3:56 
AnswerRe: How To Scramble Numbers On These Tables? Pin
Feranawati22-Apr-09 3:03
Feranawati22-Apr-09 3:03 
QuestionNeed help finding an Algorithm for a project [modified]-with image link Pin
dfreeser30-Mar-09 6:34
dfreeser30-Mar-09 6:34 
AnswerRe: Need help finding an Algorithm for a project Pin
Jörgen Andersson30-Mar-09 9:47
professionalJörgen Andersson30-Mar-09 9:47 
GeneralRe: Need help finding an Algorithm for a project Pin
dfreeser30-Mar-09 10:26
dfreeser30-Mar-09 10:26 
AnswerRe: Need help finding an Algorithm for a project [modified]-with image link Pin
dfreeser1-Apr-09 11:16
dfreeser1-Apr-09 11:16 
GeneralRe: Need help finding an Algorithm for a project [modified]-with image link Pin
73Zeppelin2-Apr-09 3:44
73Zeppelin2-Apr-09 3:44 
Questiontheory of grahp Pin
mini_25068927-Mar-09 8:00
mini_25068927-Mar-09 8:00 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.