了解数组排序算法

时间:2018-03-20 13:36:36

标签: c arrays sorting

寻找帮助描述此算法对数组进行排序。是泡泡还是选择?为什么要切换元素?

#include <stdio.h>              //including stdio.h for printf and other functions
#include <conio.h>              //including conio.h for _getch() and other functions

int main()                        //default function for call
{
    int a[10] = { 2,4,6,8 };           //Array declaration size-10
    int n = 4;                                     //Temporary number for array size
    printf("\n\nArray Data : ");
    flushall();    //Printing message
    for (int i = 0; i < n; i++)                     //Loop for displaying the data of array
    {
        printf(" %d ", a[i]);                   //Printing data
    }
    for (int i = 0; i < n; i++)                     //Loop for ascending ordering
    {
        for (int j = 0; j < n; j++)             //Loop for comparing other values
        {
            if (a[j] > a[i])                //Comparing other array elements
            {
                int tmp = a[i];         //Using temporary variable for storing last value
                a[i] = a[j];            //replacing value
                a[j] = tmp;             //storing last value
            }  
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这是一种效率较低的冒泡排序方法。

您可以在此处找到解释: https://en.wikipedia.org/wiki/Bubble_sort#Step-by-step_example

更好的代码将是

for (int i = 0; i < n-1; i++)
            for (int j = 0; j < n-i-1; j++)
                if (arr[j] > arr[j+1])
                {
                    // swap temp and arr[i]
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }

通过优化循环的上限,减少了比较次数和循环次数。

您可以在此here上看到视频。