【C语言及程序设计】冒泡排序算法(bubblesort)
问题描述:
https://blog.csdn.net/sxhelijian/article/details/45342659
从文件salary.txt中读入工人的工资(不超过500人),全部增加20%(好事),然后对工资数据进行排序,将排序后的结果保存到文件ordered_salary.txt中。
#include "stdafx.h" #include "stdlib.h" #define size 500 #pragma warning (disable :4996) int main() { FILE *fp; fp = fopen("D://code//salary.txt", "r"); if (fp == NULL) { printf("file not found."); exit(0); } double salary[size]; int i(0); while ( fscanf(fp, "%lf", &salary[i]) ==1) { i++; } fclose(fp); printf("测试salary[0]:%.2lf\n\n", salary[0]); double med; for (int x = 0; x < i-1; x++) //bubblesort { for (int y = 0; y < i-1-x; y++) { if ( salary[y]>salary[y+1] ) { med = salary[y+1]; salary[y + 1] = salary[y]; salary[y] = med; } } } fp = fopen("D://code//ordered_salary.txt", "w"); if (fp == NULL) { printf("file not found."); exit(0); } for (int j = 0; j < i; j++) { fprintf(fp, "%.2lf\n", 1.2*salary[j]); } fclose(fp); return 0; }
感想:
for (int x = 0; x < i-1; x++)
第一层循环,每循环一次都会将数组中最大数排到最后
=