冒泡排序
依次比较相邻两个元素的大小,如果前一个大于后一个,交换他们
void Bubble(int *arr,int len)
{
for (int i = 0; i < len - 1; i++)
{
bool flag = false;
for (int j = 0; j < len - 1 - i; j++)
{
int temp = 0;
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = true;
}
}
if (flag = false) {
break; }
}
}
void Show(int *arr,int len)
{
for (int i = 0; i < len; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
}
int main()
{
int arr[15] = {
89,47,39,20,4,10,38,49,76,56,8,31,19,2,0 };
int len = sizeof(arr) / sizeof(arr[0]);
Show(arr,len);
Bubble(arr, len);
Show(arr, len);
return 0;
}
快速排序
从数列中挑出一个元素,作为标准,重新排列数列,所有比标准晓得排在标准之前,所有比标准大的排在标准之后
步骤:
设置两个变量i j,分别是序列开始和结尾的位置
如果以第一个元素作为标准,就从后往前搜索
j–找到第一个小于标准的值,与第i个元素交换
i++找到第一个大于标准的值 与第j个元素交换
#include <stdio.h>
int partition(int *arr, int low, int high)
{
int key = arr[low];
while (low < high)
{
while (low < high&&arr[high] >= key) {
high--; }
arr[low] = arr[high];
while (low < high&&arr[low] <= key) {
low++; }
arr[high]</