1、冒泡法,相邻的两个数值,进行比较,满足条件的进行互换
#include <stdio.h> int main() { int index, j, tmp; int arr[] = {1, 333, 33,55}; for(index=0; index<4; index++) { for(j=3; j>index; j--) { if (arr[j] < arr[j-1]) { tmp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = tmp; } } } for(index=0; index<4; index++) { printf("%d\t", arr[index]); } return 0; }
交换排序法
/** * 简单的交换排序
* 冒泡排序初级版
*这个不算是标准的冒泡排序算法,因为不满足“两两比较相邻记录”的冒泡排序思想,她更应该是最最简单的交换排序而已
* 思路:让每一个关键字和她后面的“每一个”关键字比较,如果大则交换
缺点:效率很低
*/
#include <stdio.h> int main() { int arr[6]; int tmp, i, j; for(i=0; i<6; i++) { scanf("%d", &arr[i]); } for(i=0; i<6; i++) { for(j=i; j<5; j++) { if (arr[i]<arr[j+1]) { tmp = arr[i]; arr[i] = arr[j+1]; arr[j+1] = tmp; } } } for(i=0; i<6; i++) { printf("\n%ld\t", arr[i]); } return 0; }
3、选择法
在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。
#include <stdio.h> int main() { int arr[6]; int tmp, i, j, min; for(i=0; i<6; i++) { scanf("%d", &arr[i]); } for(i=0; i<6; i++) { min = i; for(j=i; j<5; j++) { if (arr[min]>arr[j+1]) { min = j+1; } } if (i != min ) { tmp = arr[i]; arr[i] = arr[min]; arr[min] = tmp; } } for(i=0; i<6; i++) { printf("\n%ld\t", arr[i]); } return 0; }
时间: 2024-11-05 18:45:36