Показать сообщение отдельно
Старый 23.06.2011, 17:46   #1
Hagrael
Нуждающийся
 
Регистрация: 11.06.2011
Сообщений: 57
Написано 6 полезных сообщений
(для 7 пользователей)
Сообщение 2 алгоритма сортировки массива

Еще раз здравствуйте, форумчане. Я хотел бы узнать, какой из алгоритмов сортировки быстрее. Сам я, к сожалению, еще работать со временем еще не научился, и поэтому не могу определить скорость выполнения операций. Интересует именно скорость выполнения функции sort.
#include <iostream>
using namespace std;

void sort(int arr[], int L);
void swap(int *p_1, int *p_2);

int main() {
	int i;
    int arr[5]={1, 100, 3, 2, 6};

	sort(arr, 5);
	for (i=0; i<5; i++) {cout << i << " = " << arr[i] << endl;}

    return 0;
}

void sort(int arr[], int L) {
	if (L<2) {return;}

	int i, k;
	int current_n=arr[0];

	for (i=1; i<L; i++) {
		if (arr[i]<current_n) {
			swap(&arr[i], &arr[i-1]);
			for (k=i-1; k>0; k--) {
				if (arr[k]<arr[k-1]) {
					swap(&arr[k], &arr[k-1]);
				} else {
					break;
				}
			}
		}
		current_n=arr[i];
	}
}

void swap(int *p_1, int *p_2) {
	int tmp=*p_1;
	*p_1=*p_2;
	*p_2=tmp;
}
#include <iostream>
usingnamespace std;

void sort(int n);

int main() {
	int a[10];
	int i;

	for (i=0; i<10; i++) {
		cout << "Enter array element #" << i << ": ";
		cin >> a[i];
	}

	sort(a, 10);
	cout << "Here are all the array elements, sorted:" << endl;
	for (i=0; i<10; i++) {
		cout << a[i] << " ";
	}

	return 0;
}

void sort(int a[], int n) {
	int i, j, low;
	for (i=0; i<n-1; i++) {
		low=i;
		for (j=i+1; j<n; j++) {
			if (a[j]<a[low]) {
				low=j;
			}
		}
		if (i!=low) {
			swap(&a[i], &a[low]);
		}
	}
}

void swap(int *p1, int *p2) {
	int temp=*p1;
	*p1=*p2;
	*p2=*temp;
}
Заранее благодарен.
(Offline)
 
Ответить с цитированием