选择排序算法 ---- 将数组中的数字按照顺序排列
作者:互联网
选择排序算法 ---- 将数组中的数字按照顺序排列
如题,本个blog我想分享下我今天学习的一个简单但是很实用的算法---名字叫做选择排序算法
相信在学习C语言的时候肯定会有很多的题目难到很多正在学习C语言的朋友,比如说:
现在有一个整形列表 int arr[] = {3,2,1,55,6,7} 但是现在我要按照从小到大进行排序,我要怎么办呢?
那我就来分享下我子的的观点。
(看不懂没关系,先硬着头皮看,后面可能豁然开朗了呢)
首先可以先设置一个指针用于表示这个列表的下标 , 也就是arr[i] 的这一个i
通过这个指针的扫描,可以一层层算出最小的值,比如说我的一个值是3 ,arr[0] = 3
我可以设置多一个指针j,起始的j=i+1 ,这样子就可以表示出 第二个指针的扫描了
还有很多东西都没有提及到,但是由于能力时间有限,只能先讲这么多了
emmmmmm 感觉我讲的还是没有很精炼 ,代码如下 ,希望大家理解下
要是还是不明白的可以加我QQ2667199938,备注CSDN
#include <stdio.h>
int main(void)
{
int arr[] = {3,2,1,54,4} ;
int len = sizeof arr / sizeof(int);
printArr(arr,len);
}
int printArr(int arr[],int len) // 如果返回的是一个空字符 会有warning 具体原因未知,有可能是编译器的问题
{
int i,j ;
for (i = 0;i<len;i++)
{
int min = i ; // 创造出第一个指针min ,第二个指针是 j, 排序算法
for (j=i+1 ;j<len;j++)
{
if (arr[min] > arr[j])
{
min = j ;
}
// 交换下标 实现更换 (更加准确的说是交换位置)
if (min != i)
{
int term = arr[min] ;
arr[min] = arr[i] ;
arr[i] = term ;
}
}
}
// 实现打印
int kk ;
for (kk =0;kk<len; kk++)
{
printf("%d ",arr[kk]);
}
printf("\n");
}
标签:顺序排列,arr,min,int,len,----,排序,指针 来源: https://blog.csdn.net/qq_50510142/article/details/111053955