c语言十大排序算法(一)
冒泡排序法
#include<iostream>
using namespace std;
//冒泡排序法,比较相邻两个数的大小,小的放在前面,大的放在后面
int main()
{
int arr[] = {12, 2, 13, 4, 5, 17, 8, 29, 11, 65, 43};
int n = sizeof(arr) / sizeof(int);
for (int i = n; i >= 0; i--)
{
for (int j = 0; j < n - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return 0;
}选择排序法
#include<iostream>
using namespace std;
//选择排序法,每次从未排序的序列中选出最小的元素,放在已排序数列中
void swap(int *a,int *b)//交换两数的函数
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main()
{
int arr[] = {11, 2, 31, 13, 5, 54, 24, 45};
int n = sizeof(arr)/sizeof(int);
for(int i=0;i<n-1;i++)
{
int min =i;
for(int j=i;j<n;j++)
{
if(arr[min]>arr[j])
min = j;
}
swap(arr+min,arr+i);
}
return 0;
}插入排序法
#include<iostream>
using namespace std;
//插入排序法,第一个元素被看作已经排好序的序列,选取下一个元素,从已排序的序列后面开始扫描,如果扫描的元素大于选取的元素,则将扫描元素后置一位,直至扫描元素小于选取元素,将选取元素放置在扫描序列末尾。
int main()
{
int arr[] = {12, 2, 13, 6, 34, 66, 32};
int n = sizeof(arr)/sizeof(int);
for(int i=1;i<n;i++)
{
if(arr[i]<arr[i-1])
{
int j =i-1;
int x = arr[i];
arr[i] = arr[i-1];
while(x<arr[j])
{
arr[j+1] = arr[j];
j--;
}
arr[j+1] = x;
}
}
return 0;
}