C语言-for循环排序一维数组

今天有人问了一下怎么使用C语言的FOR循环去给数组排序、其实很简单、做一个简单的记录

代码如下:

#include<stdio.h>
#include<stdlib.h>
void conversion(int a[], int len);

int main()
{
    int a[] = { 4,2,6,7,9 },i;
    int len = sizeof(a) / sizeof(int);
    conversion(a,len);
    printf_s("从小到大排序为:");
    for (i=0;i<len;i++)
    {
        printf_s(" %d ",a[i]);

    }
    printf_s("\n");
    system("pause");
    return 0;
}

void conversion(int a[],int len)
{
    int i,j,t;
    for (i=0;i<len-1;i++)
    {
        for (j=0;j<len-1-i;j++)
        {
            if (a[j]>a[j+1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }

}

效果图排序如下:

排序结果


代码解释

  • 首先构建思想、先定义一个int类型的一维数组、与len长度
    int a[] = { 4,2,6,7,9 },i;
    int len = sizeof(a) / sizeof(int);
  • 创建“conversion”函数、用于for的循环、为了代码的美观和方便其他人维护的话可以选择这样、代码量少的话也可以直接写在main函数里面!
  • 在“conversion”函数里面写上for实现代码。那么就需要main函数里面给他传递一些值进来
    int a[] = { 4,2,6,7,9 },i;
    int len = sizeof(a) / sizeof(int);
    conversion(a,len);
  • 上述代码就是main函数里面定义了值、然后我后面在创建一个函数、那么这个函数需要值、就这样把值放进去即可!
void conversion(int a[],int len)
  • 这样conversion里面就有main函数里面声明的值了!下一步开始for运算、声明i,j,t为int、for循环一下
int i,j,t;
    for (i=0;i<len-1;i++)
        {
               xxxxxxxx;
        }
  • 这里会有个小疑问?为什么len要-1呢? 其实你看一下数组的len的长度为"5",但是其实应该是从0开始数也就是4位!画张图就明白了!这里新手需要好好消化一下、有时候会被绕进去!但是千万别想复杂了!
    数组索引
  • 当然你也可以直接不用len得到长度!直接小于5即可!这里是为了带入索引的概念才写的!
  • 注意“所有的数组都是以 0 作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去 1。”
  • 那么刚刚第一次for循环了得到了数组、在进行第二次for循环比较大小、并且调换位置排列
for (j=0;j<len-1-i;j++)
        {
            if (a[j]>a[j+1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
  • 主要地方就在于if判断中调换位置的区域可能会比较懵!可能有人会问“a[j]>a[j+1]”这是个什么东西?其实他就是得到a[j]
    数后对比一下a[j+1]也就是下一位数字的大小!若是不太明白啥意思或者逻辑上理不清、建议使用vs的F5进行debug调试!

debug.png

  • 调换位置从小到大也很简单!
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
  • 声明一个t、t为空、t等于a[j]、注意看最后一句、“a[j + 1] = t;”、那么这样t这个int一直在变换、直到a[j+1]=t、t的值又被赋值给a[j+1]、这样if判断条件里面也可以继续得到值运算下去!

若是对文章内容不是很理解!建议使用vs的调式功能仔细去看函数!动手比看好很多!!!

原创文章,作者:纸飞机,如若转载,请注明出处:https://www.zfjsec.com/271.html
-- 展开阅读全文 --
FProbe-快速HTTP探测
« 上一篇 05-22
纸飞机SEC零基础-JAVA系列课程
下一篇 » 05-24

发表评论