一、冒泡排序
#include<iostream>
using namespace std;
void swap(int& a,int& b)//交换两个数的函数
{
a = a - b;
b = a + b;
a = b - a;
}
void maopao(int* arr,int n)//冒泡排序函数
{
int i ,j;
for(i = 0;i < n-1;i++)
{
for(j = 0;j < n-i-1;j++)
{
if(arr[j] > arr[j+1])
{
swap(arr[j],arr[j+1]);
}
}
}
}
void print(int* arr,int n)//自定义输出函数
{
int i;
for(i = 0;i < n;i++)
{
cout << " " << arr[i];
}
cout<< endl;
}
int main()//主函数
{
int arr[10] = {9,1,8,2,4,5,6,3,7,0};
int n = 10;
print(arr,n);
maopao(arr,n);
print(arr,n);
system("pause");
}
二、选择排序
#include<iostream>
using namespace std;
void swap(int& a,int& b)//交换两个数
{
a = a - b;
b = a + b;
a = b - a;
}
void selectsort(int* arr , int n)//选择排序
{
int i , j, min;
for(i = 0;i < n-2; i++)
{
min = i;
for(j = i + 1;j < n; j++)
{
if(arr[min] > arr[j])
min = j;
}
if(min != i)
swap(arr[min],arr[i]);
}
}
void print(int* arr,int n)//打印函数
{
int i;
for(i = 0;i < n;i++)
{
cout<< " " << arr[i];
}
cout << endl;
}
int main()//主函数
{
int arr[10] = {9,1,5,2,3,4,6,8,7,0};
int n = 10;
print(arr,n);
selectsort(arr,n);
print(arr,n);
system("pause");
return 0;
}
三、插入排序
#include<iostream>
using namespace std;
void swap(int& a,int& b)//交换两个数
{
a = a - b;
b = a + b;
a = b - a;
}
void Insertsort(int* arr , int n)//插入排序函数
{
int i , j, temp , mun;
for(i = 1;i < n; i++)
{
mun = i;
for(j = i;j > 0;j--)
{
if(arr[j-1] <= arr[i])
break;
}
temp = arr[mun];
for(;mun > j;mun--)
{
arr[mun] = arr[mun-1];
}
arr[j] = temp;
}
}
void print(int* arr,int n)//打印函数
{
int i;
for(i = 0;i < n;i++)
{
cout<< " " << arr[i];
}
cout << endl;
}
int main()//主函数
{
int arr[10] = {9,1,5,2,3,4,6,8,7,0};
int n = 10;
print(arr,n);
Insertsort(arr,n);
print(arr,n);
system("pause");
return 0;
}
四、快速排序
#include<iostream>
#include<time.h>
using namespace std;
int postion(int* arr,int left,int right)//一次对比对比排序,并返回新节点
{
int temp = arr[left];
while(left < right)
{
while(left < right && temp < arr[right]) right--;
arr[left] = arr[right];
while(left < right && temp > arr[left]) left++;
arr[right] = arr[left];
}
arr[left] = temp;
return left;
}
void kuaipai(int* arr,int left,int right)//递归多次调整排序
{
if(left < right)
{
int pos = postion(arr,left,right);
kuaipai(arr,left,pos - 1);
kuaipai(arr,pos + 1,right);
}
}
void print(int* arr,int n)//打印输出
{
int i;
for(i = 0;i < n;i++)
{
cout<< " " << arr[i];
}
cout << endl;
}
int main()//主函数
{
int arr[10] = {1,5,9,7,3,8,2,4,6,0};
int n = 10,left = 0,right = 9;
print(arr,n);
kuaipai(arr,left,right);
print(arr,n);
system("pause");
return 0;
}