More actions
imported>beonit No edit summary |
imported>beonit No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
* http://isis.poly.edu/kulesh/stuff/src/klist/ | * http://isis.poly.edu/kulesh/stuff/src/klist/ | ||
#include <unistd.h> | // #include <unistd.h> | ||
#include <stdio.h> | #include <stdio.h> | ||
#include <stdlib.h> | #include <stdlib.h> | ||
| Line 19: | Line 19: | ||
a = (int *)malloc(sizeof(int)*MAX); | a = (int *)malloc(sizeof(int)*MAX); | ||
// clock_t stime, etime; | |||
for (i = 0; i < MAX; i++) | for (i = 0; i < MAX; i++) | ||
{ | { | ||
a[i] = | a[i] = rand()%MAX; | ||
} | } | ||
// stime = clock(); | |||
qsort( a, MAX, sizeof(int), fn_qsort_intcmp ); | qsort( a, MAX, sizeof(int), fn_qsort_intcmp ); | ||
// etime = clock(); | |||
// printf("Time : %.3fs\n",(double)(etime - stime)/CLOCKS_PER_SEC); | |||
return 0; | return 0; | ||
} | |||
== qsort by template == | |||
// list::sort | |||
#include <iostream> | |||
#include <list> | |||
#include <string> | |||
#include <cctype> | |||
using namespace std; | |||
// comparison, not case sensitive. | |||
bool compare_nocase (string first, string second) | |||
{ | |||
unsigned int i=0; | |||
while ( (i<first.length()) && (i<second.length()) ) | |||
{ | |||
if (tolower(first[i])<tolower(second[i])) return true; | |||
else if (tolower(first[i])>tolower(second[i])) return false; | |||
++i; | |||
} | |||
if (first.length()<second.length()) return true; | |||
else return false; | |||
} | |||
int main () | |||
{ | |||
list<string> mylist; | |||
list<string>::iterator it; | |||
mylist.push_back ("one"); | |||
mylist.push_back ("two"); | |||
mylist.push_back ("Three"); | |||
mylist.sort(); | |||
cout << "mylist contains:"; | |||
for (it=mylist.begin(); it!=mylist.end(); ++it) | |||
cout << " " << *it; | |||
cout << endl; | |||
mylist.sort(compare_nocase); | |||
cout << "mylist contains:"; | |||
for (it=mylist.begin(); it!=mylist.end(); ++it) | |||
cout << " " << *it; | |||
cout << endl; | |||
return 0; | |||
} | } | ||
Latest revision as of 13:06, 22 June 2010
// #include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 1000000
int fn_qsort_intcmp( const void *a, const void *b )
{
return( *(int *)a - *(int *)b);
}
int main()
{
int *a;
int i;
int *c;
a = (int *)malloc(sizeof(int)*MAX);
// clock_t stime, etime;
for (i = 0; i < MAX; i++)
{
a[i] = rand()%MAX;
}
// stime = clock();
qsort( a, MAX, sizeof(int), fn_qsort_intcmp );
// etime = clock();
// printf("Time : %.3fs\n",(double)(etime - stime)/CLOCKS_PER_SEC);
return 0;
}
qsort by template
// list::sort
#include <iostream>
#include <list>
#include <string>
#include <cctype>
using namespace std;
// comparison, not case sensitive.
bool compare_nocase (string first, string second)
{
unsigned int i=0;
while ( (i<first.length()) && (i<second.length()) )
{
if (tolower(first[i])<tolower(second[i])) return true;
else if (tolower(first[i])>tolower(second[i])) return false;
++i;
}
if (first.length()<second.length()) return true;
else return false;
}
int main ()
{
list<string> mylist;
list<string>::iterator it;
mylist.push_back ("one");
mylist.push_back ("two");
mylist.push_back ("Three");
mylist.sort();
cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
cout << " " << *it;
cout << endl;
mylist.sort(compare_nocase);
cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
cout << " " << *it;
cout << endl;
return 0;
}