一、简单排序
思路:将N个数从大到小排序,取第K个数
1.冒泡排序
void BubbleSort(int *arr, int arrLen)
{
int change = 0;
for(int i = 0; i < arrLen-1; i++)
{
change = 0;
for(int j = 0; j < arrLen - i -1; j++)
{
if(arr[j] < arr[j+1])
{
swap(j, j+1);
change = 1;
}
}
if(change == 0)
break;
}
}
2.插入排序
void InsertSort(int *arr, int arrLen)
{
for(int i = 1; i < arrLen; i++)
{
int tmp = arr[i];
int j = 0;
for(j = i; j > 0 && tmp > arr[j-1]; j--)
{
arr[j] = arr[j-1];
}
arr[j] = tmp;
}
}
3.选择排序
void SelectSort(int *arr, int arrLen)
{
for(int i = 0; i < arrLen -1; i++)
{
for(int j = i+1; j < arrLen; j++)
{
if(arr[i] < arr[j])
swap(i, j);
}
}
}

本文探讨了在N个数中找到第K大元素的三种方法:简单排序(包括冒泡、插入、选择、希尔、快速排序和二叉堆),部分有序情况下的处理策略,以及快速选择算法的详细步骤。通过对不同场景的分析,阐述了如何高效地找到目标值。
最低0.47元/天 解锁文章
492

被折叠的 条评论
为什么被折叠?



