排序
排序总结
1. 冒泡排序
算法思想:冒泡排序是一种基于交换的简单排序算法,其核心思想是通过重复遍历待排序序列,逐对比较相邻元素并调整顺序,使较大(或较小)的元素逐渐“浮”到序列末端。
//冒泡排序 指的是相邻元素两两之间进行比较交换,需要比较n轮,每轮需要比较m次,从左向右升序
void BubbleSort(int buf[],unsigned int size)
{
int temp=0;//存储临时交换值
//数组长度为size,需要循环n次
for(int n=0;n<size-1;n++)
{
//每次需要比较m次
for(int m=0;m<size-n;m++)
{
if(buf[m]>buf[m+1])//如果m比m+1大,交换m和m+1
{
temp=buf[m];//用temp存储buf[m]
buf[m]=buf[m+1];//将m+1d的值给m
buf[m+1]=temp;//用m+1存储临时变量的值
}
}
}
}
int main()
{
return 0;
}
2.选择排序
算法思想:选择排序是一种简单直观的排序算法,其核心思想是通过重复从未排序序列中找到最小(或最大)元素,将其放到已排序序列的末尾。
//选择排序:每次选择数组中最小的值插在数组前面
void SelectSort(int buf[10],unsigned int size)
{
int temp;//备份最小元素的值
int min;//记录最小元素的下标
for(int n=0;n<size-1;n++)
{
min=n;//假设最小值是buf[n]
for(int m=n+1;m<size-1;m++)
{
if(buf[min]<buf[m])//比较得到数组中最小元素的下标
{
min=n;
}
}
//找到最小值元素,需要把最小值元素和序列的首部元素进行交换
temp=buf[n];//备份最小元素的值
buf[n]=buf[min];//
buf[min]=temp;
}
}
3.插入排序
算法思想:插入排序是一种基于“逐个元素插入有序区”的简单排序算法,其核心思想是将待排序序列视为“已排序”和“未排序”两部分,逐步将未排序元素插入已排序区的正确位置。
//算法思想:将数组分成两部分,一部分有序,一部分无序,每次将无序的元素插入到有序的部分中
void InsertSort(int buf[],unsigned int size)
{
int temp=0;//存储交换的临时值
int prev=0;//保存当前节点的前一个节点
for(int n=1;n<size;n++)
{
temp=buf[n];
for(int m=n-1;m>=0;m--)
{
if(temp<buf[m])//如果插入的值比当前的值小
{
prev = m;
buf[m+1]=buf[m];
}
if(temp>buf[m])//如果插入的值比当前的值大则打破循环
{
prev=m+1;
break;
}
}
buf[prev]=temp;
}
}
int main()
{
return 0;
}