美文网首页十天学会C语言
第07天C语言(12):排序优化

第07天C语言(12):排序优化

作者: liyuhong | 来源:发表于2017-07-10 09:33 被阅读27次
一、概念
二、代码
#include <stdio.h>
void printArray(int nums[],int length);
void selectSort(int nums[],int length);
void bubbleSort(int nums[],int length);
//void swap(int v1,int v2);
void swap(int nums[], int i,int j);
int main()
{
    // 已知一个无序的数组,里面有5个元素,要求对数组进行排序
    int nums[5] = {66,22,99,33,77};
    int length = sizeof(nums) / sizeof(nums[0]);

    
    printArray(nums,length);
//    selectSort(nums,length);
    bubbleSort(nums,length);
    printf("---------\n");
    printArray(nums,length);

    return 0;
}

// 遍历数组
void printArray(int nums[],int length)
{
    for (int i = 0; i < length; i++) {
        printf("遍历 nums[%i] = %i\n",i,nums[i]);
    }
}
#pragma 1. 选择排序
void selectSort(int nums[],int length)
{
    for (int i = 0; i <  length -1 ; i++) {
        for (int j = i + 1; j < length; j++) {
            if (nums[i] > nums[j]) {
//                int temp = nums[i];
//                nums[i] = nums[j];
//                nums[j] = temp;
//                swap(nums[i],nums[j]);
                swap(nums, i, j);
            }
        }
        printf("\n");
    }
}
#pragma 2.冒泡排序

void bubbleSort(int nums[],int length)
{
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < length -1 -i; j++) {
            if (nums[j] > nums[j+1]) {
//                int temp = nums[j];
//                nums[j] = nums[j+1];
//                nums[j+1] = temp;
                swap(nums, j, j+1);
            }
            
        }
    }
}
// 交换两个数
// 基本数据类型 作为函数的参数, 是值传递, 在函数中修改形参 不会影响实参的值
/*
void swap(int v1,int v2)
{
    int temp = v1;
    v1 = v2;
    v2 = temp;
}
*/

// 交换两个数的值
void swap(int nums[], int i,int j)
{
    int temp = nums[i];
    nums[i] = nums[j];
    nums[j] = temp;
}

相关文章

网友评论

    本文标题:第07天C语言(12):排序优化

    本文链接:https://www.haomeiwen.com/subject/jzkyhxtx.html