/* Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:赵玲玲 * 完成日期:2013 年 12 月 2 日 * 版 本 号:v1.0 * 输入描述: 无 * 问题描述:选择排序法排序数字 * 程序输出: 略 * 问题分析:数组应用,循环应用(嵌套循环使小数上浮,调换顺序),不同功能的函数调用 */ #include <iostream> using namespace std; void bubble_sort(int a[],int n); //两个函数bubble_sort和output_array的声明 void output_array(int a[],int n); int main( ) { int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76}; int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73}; bubble_sort(a,20); //用冒泡法按升序排序a中元素 output_array(a,20); //输出排序后的数组 bubble_sort(b,15); //用冒泡法按升序排序b中元素 output_array(b,15); //输出排序后的数组 return 0; } //请在下面定义bubble_sort和output_array函数 void bubble_sort(int a[],int n) { int t,i,j,k; for(i=1;i<=n;i++) //共进行n轮比较 { k=i; //先设k为最小 for(j=i+1;j<=n-i;j++) //每轮进行(10-i)次两两比较 { if(a[j]<a[k]) //若前面的数小于后面的数 { k=j; //通过交换得到k为最小 } } t=a[k]; a[k]=a[i]; a[i]=t; //小数排列在最前 } return ; } void output_array(int a[],int n) { int i; cout<<"数字降序排列为:"<<endl; for(i=1;i<n;i++) //交换后输出 { cout<<a[i]<<" "; } cout<<endl; return ; }
张玉老师的方法
#include <iostream> using namespace std; void arrAxuanze(int arr[10],int len2); int main() { int i,arr[10]= {1,2,4,3,8,7,9,4,5,9}; arrAxuanze(arr,10); return 0; } void arrAxuanze(int arr[10],int len2) { int i,j,t; for(i=0; i<len2-1; i++) //十个数循环九次 { for(j=0; j<len2; j++) //每次循环求出最大 { if(arr[i]<arr[i+1]) { t=arr[i+1]; arr[i+1]=arr[i]; arr[i]=t; } } } for(i=0; i<10; i++) { cout<<arr[i]<<'\t'; } }
知识点总结:选择排序法就是多用了一个中间变量,让每一个元素与之相比较,其承载的是最小(或最大)的元素