看完了郝斌老师的c语言视频,冒泡法排序,就试着写了。我觉得学习算法最重要的不是代码,而是它的原理。
代码:
1 /** 2 * Copyright (c) 1991 - 2016 Arvin Tang. 3 * All rights reserved. 4 * 5 * 文件名称:郝斌C语言视频教程_163_冒泡排序 6 * 简要描述:用冒泡法排序 7 * 8 * 当前版本:1.0 9 * 作 者: 10 * 完成日期:2016-1-9 11 * 修订说明: 12 * 13 * 取代版本: 14 * 作 者: 15 * 完成日期: 16 * 修订说明: 17 */ 18 # include <iostream> 19 20 using namespace std; 21 22 void up_sort(int * p, int num);//冒泡升序排序函数 23 void down_sort(int * p, int num);//冒泡降序排序函数 24 25 int main(int argc, char const *argv[]) 26 { 27 int num; 28 29 int i; 30 31 int op;//菜单选项 32 33 cout<<"请输入你要排序的个数:"<<endl; 34 cin>>num; 35 36 //申请动态内存 37 int * arrary = (int *)malloc(sizeof(int)*num); 38 if(arrary == NULL) 39 { 40 cout<<"申请动态数组失败!"<<endl; 41 exit(0);//exit(0)表示正常结束,exit(非0值表示错误返回) 42 } 43 44 cout<<"请输入你要排序的数字:"<<endl; 45 for(i = 0; i < num; i++) 46 { 47 cin>>arrary[i]; 48 } 49 50 cout<<"请选择排序方式对应的序号:\t1 升序(从小到大)\t2 降序(从大到小)"<<endl; 51 cin>>op; 52 53 switch(op) 54 { 55 case 1 : 56 up_sort(arrary,num); 57 cout<<"升序已排完:"<<endl; 58 break; 59 case 2 : 60 down_sort(arrary,num); 61 cout<<"降序已排完:"<<endl; 62 break; 63 default: 64 break; 65 } 66 67 for(i = 0; i < num; i++) 68 { 69 cout<<arrary[i]<<"\t"; 70 } 71 72 cout<<"\n"; 73 74 return 0; 75 } 76 77 /** 78 * 函数名称:冒泡法_升序排序 79 * 输入参数:一维数组地址,数组元素个数 80 * 输出参数: 81 * 返 回 值: 82 */ 83 void up_sort(int * p, int num) 84 { 85 int i; 86 int j; 87 int temp; 88 89 for(i = 0; i < num-1; i++) 90 { 91 for(j = 0; j < num-i-1; j++) 92 { 93 if(p[j] > p[j+1]) 94 { 95 temp = p[j+1]; 96 p[j+1] = p[j]; 97 p[j] = temp; 98 } 99 } 100 } 101 } 102 103 /** 104 * 函数名称:冒泡法_降序排序 105 * 输入参数:一维数组地址,数组元素个数 106 * 输出参数: 107 * 返 回 值: 108 */ 109 void down_sort(int * p, int num) 110 { 111 int i; 112 int j; 113 int temp; 114 115 for(i = 0; i < num-1; i++) 116 { 117 for(j = 0; j < num-i-1; j++) 118 { 119 if(p[j] < p[j+1]) 120 { 121 temp = p[j+1]; 122 p[j+1] = p[j]; 123 p[j] = temp; 124 } 125 } 126 } 127 }
效果:
时间: 2024-10-24 00:53:18