前言:
眼前同学们对“c 结构体排序”可能比较讲究,同学们都想要学习一些“c 结构体排序”的相关资讯。那么小编在网络上汇集了一些关于“c 结构体排序””的相关知识,希望你们能喜欢,看官们快快来了解一下吧!类型相同的结构体变量可以整体赋值,“类型相同的变量” 是指用同一类型标识符说明的变量。
结构体数组排序时,可以通过结构变量的整体交换进行,但效率较低。
可以使用索引机制,建立结构体指针数组,按索引排序并访问:
I 建立结构体索引数组;
II 以关键字作依据进行数据比较,移动索引;
III 通过索引访问数据;
# include <iostream>using namespace std;#define NUM 3struct person // 结构定义{ char name[10]; unsigned int id; double salary; };person allone[NUM]; // 结构数组声明person * pa[NUM] = {&allone[0] , &allone[1] , &allone[2]}; // 结构体索引数组person* struInput(person allone[]) // 结构体数据输入{ for(int i=0; i<NUM; i ++ ) { cout << i << ": name: "; gets(allone[i].name ); cout << "id: "; cin >> allone[i].id; cout << "salary: "; cin >> allone[i].salary; cout << endl; cin.ignore(32767, '\n'); // ignore up to 32767 characters until a \n is removed } return allone;}person* struSort(person allone[]) // 结构体变量整体交换的冒泡排序{ person temp; // 结构变量声明 cout << "Sort:\n"; for(int i=1; i<NUM; i++ ) // 以成员salary作关键字排序 { for(int j=0; j<NUM-i; j++) { if(allone[j].salary > allone[j+1].salary ) // 结构变量的整体交换 { temp = allone[j]; allone[j] = allone[j+1]; allone[j+1] = temp; } } } return allone;}person* struSortByIndex(person allone[]) // 按结构体变量索引的冒泡排序{ person * temp; for(int i=1; i<NUM; i++) { for(int j=0; j<NUM-i;j++ ) { if (pa[j]->salary > pa[j+1]->salary) { temp = pa[j]; pa[j] = pa[j+1]; pa[j+1] = temp ; } } } return allone;}int main(){ struInput(allone); //struSort(allone); struSortByIndex(allone); for(int i = 0; i < NUM; i ++ ) // 输出排序后数据 cout << allone[i].name << '\t' << allone[i].id << '\t' << allone[i].salary << endl; for(int j=0; j<NUM; j++) // 通过索引访问数据 cout << pa[j]->name << '\t' << pa[j]->id << '\t' << pa[j]->salary << endl; system("pause"); return 0;}/*wwu015623fwu028679zwu036666*//*0: name: wwuid: 01salary: 56231: name: fwuid: 02salary: 86792: name: zwuid: 03salary: 6666wwu 1 5623fwu 2 8679zwu 3 6666wwu 1 5623zwu 3 6666fwu 2 8679*/
-End-
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。