C++简单选择排序我出错了?为何?
#include "stdafx.h"
#include<iostream>
using namespace std;
int* selection_sort(int array[],int start,int end);
int _tmain(int argc, _TCHAR* argv[])
{
int array[10]={2,34,45,9,19,78,39,60,74,23};
selection_sort(array,0,9);
for(int i=0;i<10;i++)
{
cout<<array[i]<<endl;
}
system("pause");
return 0;
}
int* selection_sort(int array[],int start,int end)
{
for(int i=0;i<10;i++)
{
for(int j=end;j>start;j--)
{
while(array[start+i]>array[j])
{
int temp;
temp=array[start+i];
array[start+i]=array[j];
array[j]=temp;
}
}
}
return array;
}
运行只有为什么9在最后面呢?求解答
[解决办法]
数组还要return ?
- C/C++ code
void Select_Sort(datatype R[ ],int n) {/*对排序表R[1].....R[n]进行冒泡排法,n是记录个数*/ for(i=1;i<n;i++) /*做n-1趟选取*/ {k=i; /*在i开始的n-i+1个记录中选关键码最小的记录*/ for(j=i+1;j<=n;j++) if(R[j].key<r[k].key)k=j; /*k中存放关键码最小记录的下标*/ if(i!=k) /*关键码最小的记录与第i个记录交换*/ {R[0]=R[k]; R[k]=R[i]; R[i]= R[0]; } } }
[解决办法]
- C/C++ code
void selection_sort(int array[],int start,int end){ for(int i=0;i<10;i++) { for(int j=end;j>start+i;j--) //主要是这里j>start改为j>start+i { if(array[start+i]>array[j]) { int temp; temp=array[start+i]; array[start+i]=array[j]; array[j]=temp; } } }}