/*
从一个文件1.txt中读取一些整数,然后排序,将排序后的结果写到文件2.txt,并
在屏幕上显示。
下面是C++的实现方法!
*/
int main()
{
ifstream in;
ofstream out;
in.open("D://1.txt", ios::in);
out.open("D://2.txt", ios::out);
istream_iterator<int> inIter(in), eof;
vector<int> vec;
copy(inIter, eof, back_inserter(vec));//从文件中读取
printf("排序前为:/n");
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
printf("/n");
sort(vec.begin(), vec.end());//排序
printf("排序后为:/n");
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
printf("/n");
copy(vec.begin(), vec.end(), ostream_iterator<int>(out, " "));//写回到文件
out<<"/n";
//写回到文件的第二种方法
vector<int>::iterator iter = vec.begin();
while (iter != vec.end())
{
out<<*iter++<<" ";
}
out<<endl;
}
int cmp(const void *elem1, const void *elem2)
{
return (*(int*)elem1 > *(int*)elem2) ? 1 : -1;
}
int main()
{
FILE *in;
FILE *out;
in = fopen("D://1.txt", "rt");
out = fopen("D://2.txt", "wt");
std::vector<int> vec;
int d;
printf("排序前为:/n");
while (!feof(in))//feof(文件指针)用来判断是否到文件结尾
{
fscanf(in, "%d ", &d);
printf("%d ", d);
vec.push_back(d);
}
printf("/n");
qsort(vec.begin(), vec.size(), sizeof(int), cmp);
printf("排序后为:/n");
for (int i=0; i<vec.size(); i++)
{
fprintf(out, "%d ", vec.at(i));
printf("%d ", vec.at(i));
}
printf("/n");
}
c语言中的快速排序算法:qsort函数
C语言中排序的算法有很多种,系统也提供了一个函数qsort()可以实现快速排序。原型如下:
void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));
它根据comp所指向的函数所提供的顺序对base所指向的数组进行排序,nmem为参加排序的元素个数,size为每个元素所占的字节数。例如要对元素进行升序排列,则定义comp所指向的函数为:如果其第一个参数比第二个参数小,则返回一个小于0的值,反之则返回一个大于0的值,如果相等,则返回0。
例:
#include <stdio.h>
#include <stdlib.h>
int comp(const void *, const void *);
int main(int argc, char *argv[])
{
int i;
int array[] = {6, 8, 2, 9, 1, 0};
qsort(array, 6, sizeof(int), comp);
for (i = 0; i < 6; i ++) {
printf("%d/t", array[i]);
}
printf("/n");
return 0;
}
int comp(const void *p, const void *q)
{
return (*(int *)p - *(int *)q);
}
运行结果如下:
0 1 2 6 8 9
程序什么时候应该使用线程,什么时候单线程效率高。
怎样用dll输出一个类?