Line 1: Line 1:
Complexity <math>\theta(n)</math>
+
[[https://armi.in/wiki/Complexity_of_Basic_Sorting_Algorithms |Complexity and no. of swaps required]]
 
 
No. of swaps in the worst case = <math> \lfloor n/2 \rfloor</math>
 
  
 
<syntaxhighlight lang="c">
 
<syntaxhighlight lang="c">
Line 66: Line 64:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 
{{Template:FBD}}
 
{{Template:FBD}}
  
 
[[Category: Code]]
 
[[Category: Code]]

Revision as of 22:46, 15 January 2014

[|Complexity and no. of swaps required]

<syntaxhighlight lang="c">

  1. include<stdio.h>

void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }

void qsort(int a[], int start, int end) { int i, j, p; if(start >= end-1) { return; } i = p = start, j = end-1; while(i < j) { while(a[i] <= a[p] && i < end-1) i++; while(a[j] > a[p]) j--; if(i < j) { swap(&a[i], &a[j]); } } swap(&a[j], &a[p]); qsort(a, start, j); qsort(a, j + 1, end); }

void printArray(int a[], int n) { int i; for(i = 0; i < n; i++) { printf("%d ",a[i]); } }

int main() { char str[20]; int num[100]; int i = 0; printf("Enter the numbers to sort (. to stop): "); while(1) { scanf("%s",str); if(str[0] == '.') break; sscanf(str, "%d", &num[i++]); } qsort(num, 0, i); printf("The sorted numbers are: "); printArray(num, i); printf("\n"); } </syntaxhighlight>




blog comments powered by Disqus

Complexity <math>\theta(n)</math>

No. of swaps in the worst case = <math> \lfloor n/2 \rfloor</math>

<syntaxhighlight lang="c">

  1. include<stdio.h>

void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; }

void qsort(int a[], int start, int end) { int i, j, p; if(start >= end-1) { return; } i = p = start, j = end-1; while(i < j) { while(a[i] <= a[p] && i < end-1) i++; while(a[j] > a[p]) j--; if(i < j) { swap(&a[i], &a[j]); } } swap(&a[j], &a[p]); qsort(a, start, j); qsort(a, j + 1, end); }

void printArray(int a[], int n) { int i; for(i = 0; i < n; i++) { printf("%d ",a[i]); } }

int main() { char str[20]; int num[100]; int i = 0; printf("Enter the numbers to sort (. to stop): "); while(1) { scanf("%s",str); if(str[0] == '.') break; sscanf(str, "%d", &num[i++]); } qsort(num, 0, i); printf("The sorted numbers are: "); printArray(num, i); printf("\n"); } </syntaxhighlight>



blog comments powered by Disqus