赞
踩
两两相邻的元素进行比较,并且有可能的话需要交换
升序
#include<stdio.h> int main() { int arr[10] = { 0 }; int m = 0; for (m = 0; m < 10; m++) { scanf("%d", &arr[m]);//输入10个数放进数组里面去 } for (m = 1; m < =10; m++)//冒泡排序进行的趟数 { int j = 0; for (j = 0; j < 10-m; j++)//一趟冒泡排序要进行多少对元素的比较 { int temp = 0; if (arr[j] > arr[j + 1]) { temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } } for (m = 0; m < 10; m++)//打印冒泡排序排序好之后的数组 { printf("%d ", arr[m]); } return 0; }
运行结果:
升序
#include<stdio.h> int main() { int arr[10] = { 0 }; int sz = 0; sz = sizeof(arr) / sizeof(arr[10]);//表示数组的元素个数 int m = 0; for (m = 0; m < sz; m++) { scanf("%d", &arr[m]); } for (m = 1; m <=sz; m++)//冒泡排序进行的趟数 { int j = 0; int flag = 1;//假设待排序的数组中的元素已经有序 for (j = 0; j < sz-m; j++)//对未排序元素进⾏冒泡排序 { int temp = 0; if (arr[j] > arr[j + 1]) { flag = 0;//只要交换说明正在排序的数据不是有序的 temp = arr[j + 1]; arr[j + 1] = arr[j]; arr[j] = temp; } } if (flag == 1)//当前序列已经是升序状态,结束循环 { break; } } for (m = 0; m < sz; m++) { printf("%d ", arr[m]); } return 0; }
运行结果:
qsort() 函数的声明:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
参数:
base – 指向要排序的数组的第一个元素的指针。
nitems – 由 base 指向的数组中元素的个数。
size – 数组中每个元素的大小,以字节为单位。
compar – 用来比较两个元素的函数。
头文件:stdlib.h
#include<stdio.h> #include<stdlib.h> int cmp_int(const void* e1, const void* e2) { return *(int*)e1 - *(int*)e2; } int main() { int arr[10] = { 0 }; int sz = 0; sz = sizeof(arr) / sizeof(arr[10]);//表示数组的元素个数 int m = 0; for (m = 0; m < sz; m++) { scanf("%d", &arr[m]); } qsort(arr,sz,4, cmp_int); for (m = 0; m < sz; m++) { printf("%d ", arr[m]); } return 0; }
运行结果:
如果这个想让他降序排序可以将下面这行代码中的两个交换位置:
欧耶!!!!我学会啦!!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。