在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 冒泡排序简介(默认从小到大排序) 核心思想:只比较相邻的两个元素,如果满足条件就交换 5 8 2 1 6 9 4 3 7 0 目标:0 1 2 3 4 5 6 7 8 9 5 8 2 1 6 9 4 3 7 0 8 >2 满足条件 交换.... 下一次交换 下一次交换 下一次交换 下一次交换 下一次交换 下一次交换 下一次交换 2. 总共进行了 n-1次大的交换(n个元素 只有1个元素不需要排序) 5 2 1 6 8 4 3 7 0 9 //这次交换 一共变化了9次 for(int i = 0;i < N-1;i++){ for(int j = 0;j < N-1-i;i++){ 交换 ... } } 3. 实战 for while do-while 递归 #include<stdio.h> #include<stdlib.h> #define N 10 void print(int *a){ for (int i = 0; i < N; i++) { printf("%d ",*(a+i)); } printf("\n"); } void maopao_for(int *a){ for (int i = 0; i < N - 1; i++) { for (int j = 0; j < N - 1 - i; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } print(a); } } void maopao_while(int *a) { int i = 0; while (i < N - 1) { int j = 0; while (j < N - 1 - i) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } j++; } print(a); i++; } } void maopao_do_while(int *a) { int i = 0; do{ int j = 0; do{ if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } j++; } while (j < N - 1 - i); print(a); i++; } while (i < N - 1); } // 递归可以减少一次循环 void maopao_digui(int *a,int count) { if(count>=N) return ; for (int j = 0; j < N - 1 - count; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } }//printf("下一次交换\n\n\n"); print(a); maopao_digui(a,count+1); } int main(){ int a[N] = {5,8,2,1,6,9,4,3,7,0}; printf("排序前:\n"); print(a); printf("排序中:\n"); maopao_digui(a,0); printf("排序后:\n"); print(a); return 0; }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论