/**
选择排序法(记录下标)
思路:
分为已排序和未排序
在未排序部分找到最小值的下标
与未排序部分的第一个数交换
直到未排序结束
*/
void select_sort(int a[], int n)
{
int i,j;
int min_index;
int temp;
for(i = 0; i<n; ++i){
min_index = i;///最小值下标的初始化
for(j = i;j<n;++j){
if(a[j]<a[min_index])///找到最小值下标的替换过程
min_index = j;///把最小值放在前面
temp = a[i];
a[i] = a[min_index];
a[min_index] = temp;
}
}
}
/**
插入排序
优点,快速处理相对有序的序列
*/
void insert_sort(int a[], int n)
{
int i,j,temp;
for(i = 1; i<n; ++i)///从1开始是因为默认a[0]排序完成
{
temp = a[i];///把未排序数据赋值给temp
j = i-1;///j为循环标记
while(j>=0 && a[j] > temp)///保证到0停止,保证小于某值时退出
{
a[j+1] = a[j];///向后移动一位,多次循环移动多次
j--;///把比较目标向前推进
}
a[j+1] = temp;///把目标值放入已排序区域
}
}
【菜鸟er】搜索专题_选择插入排序
最新推荐文章于 2024-04-27 16:41:23 发布