Skip to content

Instantly share code, notes, and snippets.

@caljim
Created January 29, 2013 17:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save caljim/4666171 to your computer and use it in GitHub Desktop.
Save caljim/4666171 to your computer and use it in GitHub Desktop.
Divide Sort
#include "stdio.h"
#ifndef MAXNUM
#define MAXNUM 100
#endif
void divide(int needle[], int from, int end)
{
int num = end - from;
if (num == 0)
return ;
if (num == 1)
{
/* code */
if (needle [from] > needle[end] )
{
/* code */
needle[from] ^= needle[end];
needle[end] ^= needle[from];
needle[from] ^= needle[end];
}
return ;
}
else {
int middle = (from + end) / 2;
divide(needle,middle + 1,end);
divide(needle,from,middle);
for (int i = from; i <= end; ++i)
{
for (int j = i + 1; j <= end ; ++j)
{
if( needle[j] < needle [i]) {
needle[j] ^= needle[i];
needle[i] ^= needle[j];
needle[j] ^= needle[i];
}
}
}
}
return ;
}
int main(void)
{
int need[10] = {3,5,1,2,6,8,9,0,4,9};
divide(need,0,9);
for(int i = 0; i < 10; i++) {
printf("%d\n",need[i]);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment