今天来总结一下著名的八大排序算法中的选择排序中的两种排序,为什么从这里开始讲,不知道,随便吧,从哪里开始都行。
其实初学我也总是忘记,函数名和参数写好之后就开始发呆了,我自己的一些经验来看:对于每种排序算法我们首先得了解核心思想,然后根据这个核心思想可以进行几轮的手动排序,从中得到核心代码,再由核心代码再完整的写出来整个排序算法。当然了,大佬完全可以在脑子里面进行动态的转换的…我就不行了。
所以我会主要记录一下前两步,也方便自己后面的复习。
1.简单选择排序时间复杂度O(n^2) 空间复杂度O(1)不稳定
再写代码之前再说几句:无论是我还是正在读文章的你可能会有一种感觉这个简单选择排序根简单插入排序有一谢谢相似点,不如说都要分为待排序和已排序部分等,但是还是有细微的差别,为了记忆更深刻这些差别和共同点都要了解清楚,再下次针对插入排序的总结中,我们在比较比较两者的相同点和差别。
来看代码:
void SelectSort(int arr[],int len)
{
int i=0;
int j;
int min;
for(i;i<=len-2;i++)
{
min=i;
for(j=i+1;j<len;j++)
{
if(arr[j]<arr[min])
{
min