按結構體某一元素排序的小程式(fishing_3)
最近遇到,要排序選最優的問題,有11組3類屬性【a,b,c】的資料,需要在11個b中選出最小的b,並輸出對應的a,c。因為都是數,之前我是打算用陣列來做,宣告3個陣列,然後對其中一個進行排序,然後選出索引對應的其他陣列,但感覺沒思路,覺得可能用結構體陣列可能會簡便些,至少看起來沒那麼多的陣列看著煩,最後寫出來了,一些需要注意的點在程式的註釋部分都寫了。做的測試原始碼如下:
#include "stdio.h"
/***宣告結構體***/
typedef struct //這裡比直接struct recommand宣告的好處就是,省去了struct recommand mid這樣的宣告。
{
float w;
int k;
int f;
}recommand;
void main(void)
{
int i;
int j;
int v;
#define numbers 11 //結構體陣列大小,方便移植
recommand re[numbers]; //定義結構體陣列re
recommand mid; //定義用於交換傳值的中間結構體mid
recommand *p = re; //定義結構體指標p,指向結構體陣列re的首地址
/**初始化結構體陣列**/
for(i = 0;i < numbers;i++)
{
re[i].w = 1 + i*1.0/10; //這裡要注意下,浮點數和整數的一些轉換,我在這裡就弄錯過
re[i].f = 1 + i;
re[i].k = 20 -i;
printf("第%d個結構體的資訊為: w :%f k:%d f:%d \r\n", i, re[i].w, re[i].k, re[i].f);
}
/**排序**/
for(i = 1;i <= (numbers-1);i++) //注意這裡的迴圈次數
{
for(j = 0;j <= (numbers - i -1);j++) //注意這裡的迴圈次數
{
if((p+j)->k > (p+j+1)->k) //從小到大排序 //(p+j)->k < (p+j+1)->k 從大到小排序
{
mid = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1)=mid;
}
}
}
printf("\r\n按k從小到大排序,排序結果為:");
printf("\r\n");
//列印最後結果
for(v = 0;v < numbers;v++)
{
printf(" w:%f, k:%d, f:%d \r\n", (p+v)->w, (p+v)->k, (p+v)->f);
}
}
程式的結果如下:
參考的資料:
https://blog.csdn.net/csdn17355456893/article/details/77607340
歡迎批評指正交流!
相關文章
- list集合按元素的某一屬性排序排序
- PHP 二維陣列, 按某一個欄位排序PHP陣列排序
- 排名——採用結構體排序結構體排序
- 【c++】結構體sort排序C++結構體排序
- 構建小程式總結
- 小程式按鈕
- 小程式的專案結構設計
- 小程式拖拽排序排序
- 拓撲排序小結排序
- 資料結構:快速排序程式碼(已優化)資料結構排序優化
- 「MoreThanJava」Day 1:環境搭建和程式基本結構元素Java
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- 資料結構與排序資料結構排序
- 微信小程式-選擇時間(一週的某一時刻)微信小程式
- 資料結構(python) —— 【18排序: 桶排序】資料結構Python排序
- 指令集體系結構_計算機體系結構:指令程式碼計算機
- 力扣-83. 刪除排序連結串列中的重複元素力扣排序
- 83. 刪除排序連結串列中的重複元素(JavaScript版)排序JavaScript
- leetcode-82:刪除排序連結串列中重複的元素-iiLeetCode排序
- Laravel 根據 relation sum 結果排序的小技巧Laravel排序
- Excel表格如何按漢字的筆畫排序?Excel表格按漢字的筆畫排序的方法Excel排序
- 結構體中套用其他_結構體結構體
- 結構體的大小結構體
- 資料結構--排序--插入排序--python語言描述資料結構排序Python
- Map集合的按時間排序方法排序
- JavaScript中的程式結構和分支結構JavaScript
- 小程式的按鈕按下去的樣式(button-hover)為啥不起作用?
- 資料結構32:選擇排序資料結構排序
- 資料結構之計數排序資料結構排序
- 資料結構第10章 排序資料結構排序
- 【資料結構與演算法】高階排序(希爾排序、歸併排序、快速排序)完整思路,並用程式碼封裝排序函式資料結構演算法排序封裝函式
- 如何組織軟體模組的程式碼結構?
- MySQL 預設排序真的是按主鍵來排序的嗎MySql排序
- (戀上資料結構筆記):計數排序、基數排序 、桶排序資料結構筆記排序
- 1.4分支結構程式設計(短路運算,三數排序)程式設計排序
- javascript 詞法結構小結JavaScript
- CSS 小結筆記之元素的隱藏與顯示CSS筆記
- 【資料結構與演算法】非比較排序(計數排序、桶排序、基數排序)資料結構演算法排序