碼圖結構體排序

題目如下:
對結構體數組進行排序。

“題目描述:
struct Person{
  int no;
  int age;
  int height;
}
實現sort方法對結構體數組進行排序。
void sort(Person * array,int n);
保存為sort.cpp.
根據no從小到大排序;如果no相同則根據age排序;如果age相同,則根據height排序。

注意:
遇到異常情況,輸出"error";否則不要隨意輸出,會視為錯誤。”

Q1:排序

不是很熟悉排序所以又看了一下冒泡排序
代碼如下:

#include <stdio.h>
void swap(int *a, int *b);
int main()
{
    int    array[10] = {15, 225, 34, 42, 52, 6, 7856, 865, 954, 10};
    int    i, j;
    for (i = 0; i < 10; i++)
    {
        //每一次由底至上地上升
        for (j = 9; j > i; j--)
        {
            if (array[j] < array[j-1])
            {
                swap(&array[j], &array[j-1]);
            }
        }
    }
    for (i = 0; i < 10; i++)
    {
        printf("%d\n", array[i]);
    }
    return    0;
}
void swap(int *a, int *b)
{
    int    temp;
    temp = *a;
    *a = *b;
    *b = temp;
}    

在編譯器里操作了一下,總結有以下幾點值得關注:

  • 會把較小的數(不是最小)也冒泡上去,體現在無論是否交換位置,都會j--,然后再比較,其實array[j-1]始終是較小的那個數,和相鄰的數比較。
  • 因為已找出了最小和次最小,所以不用和它們比了,體現在j>i

Tip 2

交換函數,注意形參是struct person類型。

Tip 3

有個bug坑了我好久

      
swap(array+j,array+j-1);    

之前寫成了

swap(array+j;array+j-1);   

就說為什么編譯器一直提醒我要在array前面加括號,原來有分號它以為我語句結束了。

Tip 4

要調用的函數要么先聲明,要么就把函數體寫在前面。

Tip 5

基本的算法沒有那么難,相信自己可以解決!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容