算法排序---直接插入排序,希尔排序,选择排序,冒泡排序

#include<stdlib.h>
#include<iostream>
#include<stdio.h>
using namespace std;
//排序:直接插入排序,希尔排序,选择排序,冒泡排序,

//直接插入排序:
void swap(int a, int b)
{
		int temp = a;
		a = b;
		b = temp;
}
void print(int array[], int n)   //输出函数
{
	for (int i = 0; i < n; ++i)
	{
		cout << array[i] << endl; 
	}
}
void InsertSort (int a[], int n)   //直接插入函数

{
	for (int i = 0; i <n-1; ++i)
	{
		int test = a[i+1];
		while(i>=0&&test < a[i])
		{
			a[i+1] = a[i];
			i--;
		}
		a[i+1] = test;
	}
}

//希尔排序
void SheelSort(int a[], int n)
{
	int gap = n / 2;
	while (gap > 0)
	{
		for (int i = gap; i < n; ++i)
		{
			int test = a[i];
			int pre = i - gap;
			while (pre >= 0 && a[pre] > test)
			{
				a[pre + gap] = a[pre];
				pre -= gap;
			}
			a[pre + gap] = test;
		}
		gap /= 2;
	}
}

//选择排序
void SelectSort(int a[], int n)
{
	for (int i = 0; i < n; ++i)
	{
		int min = i;
		for (int j = i + 1; j < n; ++j)
			if (a[min] > a[j])
				min = j;
		if (min != i)
			swap(a[i], a[min]);
	}
}

//快速排序
void QuickSort(int a[], int n)
{

}

//冒泡排序
void BubbleSort(int a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		for (int j = i + 1; j < n;++j)
		{
			if(a[i]>a[j])
				swap(a[i], a[j]);
		}	
	}
}

int main()
{
	int array[] = { 3,5,2,14,25,11,8,6,6 };
	int len = sizeof(array) / sizeof(*array);
	print(array, len);
	cout << endl;
	InsertSort(array, len);
	cout << endl;
	print(array, len);
	cout << endl;
	system("pause");
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41848006/article/details/81535265