链表实现排序算法 - 百度文库 ر

ʵѧϢͨŹѧԺ

comparision++; front->data = s->data; movement++; Node*x = p; Node*y = s; while (front->data < x->data) { comparision++; y->data = x->data; movement++; x = x->previor; y = y->previor; } y->data = front->data; movement++; } comparision++; p = p->next; s = s->next; } }

void LinkList::bubblesort() {

Node*s = front->previor; while (s != front) { Node*p = s; s = front;

Node*x = front->next; Node*y = x->next; while (x != p) { if (x->data > y->data) { comparision++; front->data = x->data; x->data = y->data; y->data = front->data;

movement = movement + 3;

13ҳ

//ʼԪλ //Ԫλ ʵѧϢͨŹѧԺ

s = x; //Ԫλ } comparision++; x = x->next; y = y->next; } } }

void LinkList::Qsort(Node*x,Node*y) {

if (x->previor != y) { Node*pivot = partion(x, y); Qsort(x, pivot->previor); Qsort(pivot->next, y); } }

void LinkList::selectsort() {

Node*s = front->next; while (s != front->previor) { Node*p = s->next; Node*record = s; while (p != front) { Node*x = record; if (p->data < x->data) { comparision++; record = p; } comparision++; p = p->next; } if (record != s) { int a = record->data; record->data = s->data;

14ҳ

ʵѧϢͨŹѧԺ

s->data = a; movement = movement + 3; } s = s->next; } }

void LinkList::show() {

Node*x = new Node; x = front->next; while (x != front) { cout << x->data << setw(4); x = x->next; }

cout << endl << \Ƚϴ\ cout << \ƶ\ cout << endl; }

LinkList:: ~LinkList() {

Node*p = front; while (p!=front) { Node*a = p; p = p->next; delete a; }

delete p; }

void showmenu(); int main() {

showmenu(); cin.get(); cin.get(); return 0; }

void showmenu()

15ҳ

ʵѧϢͨŹѧԺ

{

int jay1[7] = { 2,6,7,9,15,24,29 }; int jay2[7] = { 54,40,38,37,29,24,12 }; int jay3[7] = { 16,45,81,1,4,69,100 }; LinkList zzj1(jay1, 7); LinkList zzj2(jay2, 7); LinkList zzj3(jay3, 7);

cout << \ݣ\cout << \ݣ\cout << \ݣ\int choice;

cout << \ѡҪݣ\\n\ \ 2.ð\\n\ \ 4.ѡ\\n\ \˳\\n\cin >> choice; int count = 0; Node*x, *y, *z; while (choice != 5) { switch (choice) { case 1: if (count != 0) { x = zzj1.front->next; y = zzj2.front->next; z = zzj3.front->next; for (int i = 0; i < 7; i++) { x->data = jay1[i]; y->data = jay2[i]; z->data = jay3[i]; x = x->next; y = y->next; z = z->next; } zzj1.comparision = zzj1.movement = 0; zzj2.comparision = zzj2.movement = 0;

16ҳ