注册 登录
编程论坛 C++教室

[求助]指针的选择法,有点不懂

a8451727 发布于 2007-07-23 13:17, 744 次点击

#include<iostream>
using namespace std;
int main()
{
void select_sort(int *p,int n);
int a[10],i;
cout<<"Enter the originl array:"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
cout<<endl;
select_sort(a,10);
cout<<"The sorted array:"<<endl;
for(i=0;i<10;i++)
cout<<a[i]<<' ';
cout<<endl;
return 0;
}
void selct_sort(int *p,int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(*(p+j)<*(p+k))
k=j;//只有这里看不懂,请大家帮下我
t=*(p+k);
*(p+k)=*(p+i);
*(p+i)=t;
}
}

4 回复
#2
aipb20072007-07-23 13:27
[CODE] const int size = 5;
int a[size] = {2,56,25,4,8};
//sort
int small;
for (int i = 0;i < size-1;++i){
small = i;
for (int j = i+1;j < size;++j){
if (a[j] < a[small])
small = j;
}
//swap
int temp = a[i];
a[i] = a[small];
a[small] = temp;
}[/CODE]
这是用下标索引的选择排序,红色部分就相当与k = j,目的是保持k为当前最小值的索引。

[此贴子已经被作者于2007-7-23 13:28:38编辑过]

#3
a84517272007-07-23 13:44
不能直接用 i或j吗?
#4
aipb20072007-07-23 14:50

i和j是控制两个loop的变量,你的意思是?

其实这就是个选择排序,只是你的型参是指针,我那个用数组,其他的都一样。

#5
a84517272007-07-23 15:19
仔细看了下,明白了。谢谢啦
1