按結構體某一元素排序的小程式(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++結構體排序C++結構體排序
- 排名——採用結構體排序結構體排序
- 【c++】結構體sort排序C++結構體排序
- ORACLE體系結構小結Oracle
- HTML5新增的主體結構元素HTML
- ZOJ 3875 Lunch Time(結構體排序)結構體排序
- HTML5新增的非主體結構元素HTML
- 構建小程式總結
- 小程式按鈕
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- 拓撲排序小結排序
- 小程式的專案結構設計
- 小程式拖拽排序排序
- Oracle例項的程式結構和記憶體結構Oracle記憶體
- pat—結構體排序(用map彌補struct缺陷)結構體排序Struct
- ORACLE例項的程式結構和記憶體結構(轉)Oracle記憶體
- 資料結構:快速排序程式碼(已優化)資料結構排序優化
- html新增結構元素解析HTML
- HTML5結構元素HTML
- C4top-搶紅包 (模擬-結構體排序)結構體排序
- 微信小程式-選擇時間(一週的某一時刻)微信小程式
- Postgresql資料庫體系結構-程式和記憶體結構SQL資料庫記憶體
- 資料結構與排序資料結構排序
- 【資料結構】希爾排序!!!資料結構排序
- 【資料結構】希爾排序資料結構排序
- 【資料結構】堆排序資料結構排序
- 【資料結構】快速排序資料結構排序
- 「MoreThanJava」Day 1:環境搭建和程式基本結構元素Java
- js陣列元素排序程式碼例項JS陣列排序
- [HTML] html5新增的結構元素HTML
- 資料結構(python) —— 【18排序: 桶排序】資料結構Python排序
- HDU 6015-Skip the Class(模擬-結構體排序)結構體排序
- jQuery如何判斷某一個元素是否存在jQuery
- 常見排序演算法小結排序演算法
- C語言-對一個結構體中的欄位進行排序C語言結構體排序
- 關於用display:table讓元素居中的小結