[cpp] /* * Copyright (c) 2012, 煙台大學計算機學院 * All rights reserved. * 文件名稱:test.cpp * 作者:樊露露 * 完成日期:2012 年12月16日 * 版本號:v1.0 * * 輸入描述:無 * 問題描述:用指針作形參給數組排序 * 程序輸出:數組 * 問題分析: * 算法設計:略 */ www.2cto.com #include<iostream> using namespace std; int main(){ void select_sort(int *p,int n);//定義函數 int a[10]={5,8,6,97,1,3,4,87,13,19},i; select_sort(a,10); //引用函數 cout<<"排序後的數組為:"<<endl; for(i=0;i<10;i++) //輸出函數 cout<<a[i]<<' '; cout<<endl; return 0; } //排序函數代碼 void select_sort(int *p,int n)//用指針變量作形參 { int i,j,t,k; //i的循環(第一層循環)從0開始,這是理所當然的。到n-2結束,因為到n-2時與n-1比較過,就不用循環到n了。 for(i=0;i<n-1;i++){ //將i賦值給k,使下面的排序從i開始,i前面已經排好的不用管了。 k=i; //j的循環(第二層循環)從i+1開始,到n-1結束。排序要逐個的比較。 for(j=i+1;j<n;j++) //如果後一個數大於前一個數,將j賦值給k if(*(p+j)>*(p+k)) k=j;。 //排序,用指針來接收數組地址。 t=*(p+k); *(p+k)=*(p+i); *(p+i)=t; } }