[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;
}
}