您的位置:首页 > 编程语言 > C语言/C++

CPP冒泡排序,插入排序,快速排序,等

2015-05-06 16:39 363 查看
#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <string>

#include <Windows.h>

#include <ctime>

using namespace std;

class Person

{

string name;

int age;

string addr;

public:

Person(){}

Person(const char *n, int age, const char *ad) :name(n), age(age), addr(ad){}

~Person(){}

string getname()

{

return this->name;

}

friend bool operator <(const Person &a, const Person &b)

{

return a.name < b.name;

}

friend bool operator==(const Person &a, const Person &b)

{

return a.name == b.name;

}

friend ostream& operator<<(ostream& out, const Person &a)

{

out << a.name << ", " << a.age << "," << a.addr << endl;

return out;

}

};

/*

@@冒泡法1

*/

void Bubblesort1(Person a[], int n)

{

for (int i = 0; i < n-1; i++)

{

for (int j = i+1; j < n; j++)

{

Person p;

if (a[i].getname() <a[j].getname())

{

p = a[i];

a[i] = a[j];

a[j] = p;

}

}

}

}

/*

@@冒泡法2,一次循环

*/

void Bubblesort2(int *a, int n)

{

bool changed;

do

{

changed = false;

for (int i = 1; i < n; i++)

{

if (a[i - 1] > a[i])

{

swap(a[i], a[i - 1]);

changed = true;

}

}

--n;

} while (changed);

}

/*

@@插入排序

@@从后向前找

@@时间:0.4。。

*/

void insertSort(int *a, int n)

{

int j;

int temp;

for (int i = 1; i < n; i++)

{

temp = *(a + i);

for (j = i; j>0 && *(a+j-1)>temp; j--)

{

*(a + j) = *(a + j - 1);

}

*(a + j) = temp;

}

}

/*

@@选择排序

时间:0.3。。

*/

void selectionSort(int *a, int n)

{

int j;

int temp;

int mid;

for (int i = 0; i < n-1; i++)

{

temp = i;

for ( j = i+1; j < n; j++)

{

if (a[temp] <a[j])

temp = j;

}

if (i != temp)

{

mid = a[temp];

a[temp] = a[i];

a[i] = a[temp];

}

}

}

/*

@@快速排序

*/

void Qsort(int *a, int low, int high)

{

if (low >= high)

return;

int first = low;

int last = high;

int key = a[first];//第一个记录

while (first < last)

{

while (first < last && a[last] >= key)

{

--last;

}

a[first] = a[last];//将比第一个数小的数移动到第一个位置

while (first < last && a[first] <= key)

{

++first;

}

a[last] = a[first];

}

a[first] = key;//中间值

Qsort(a, low, first - 1);

Qsort(a, first + 1, high);

}

void main()

{

Person a[6] = {

Person("王五", 22, "山东"),

Person("赵四", 33, "河南"),

Person("张三", 44, "浙江"),

Person("陈五2", 222, "山东"),

Person("徐四2", 332, "河南"),

Person("魏三2", 442, "浙江") };

Bubblesort1(a, 6);

for (int i = 0; i < 6; i++)

{

cout << a[i] << endl;

}

int b[] = { 5, 7, 8, 1, 25, 23, 4, 2, 58, 626, 24, 23, 7, 5, 7, 65, 1 };

/*for (int i = 0; i < 10; i++)

{

b[i] = 10 - i ;

}*/

int len = sizeof(b) / sizeof(int);

cout << len << endl;

for (int i = 0; i < 10; i++)

{

cout << b[i] << " ,";

}

cout << endl;

//引用头文件#include <ctime>

//计算cpu时间,注意计算公式:double(end - begin) / CLOCKS_PER_SEC //其中CLOCKS_PER_SEC == 1000

time_t begin, end;

begin = clock();

Qsort(b, 0, len-1);

end = clock();

cout << double(end - begin) / CLOCKS_PER_SEC << endl;

for (int i = 0; i < 10; i++)

{

cout << b[i] << " ,";

}

cout << endl;

system("pause");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐