选择排序

// SelectSort.cpp : 描述选择排序 // 选择排序是一种不稳定的算法,因为不能保证排序后,相同值元素保持原有顺序 // 算法复杂度为O(n^2) // 空间复杂度为O(1) #include "stdafx.h" void SelectSort(int ai[],int n) { //i标示参考值元素的位置 //j用于遍历尚未排序的子序列,j的初始位置为i+1 //small用于存储尚未排序的子序列中最小元素的位置 //temp用于存储i和small交换时的临时存储区 int i,j,small; int temp; //参考值的范围从序列中第一个元素,到倒数第二个元素 for(i = 0;i <n-1;i++) { //先将i作为最小元素 small=i; //此for循环用于寻找参考值其后的序列中最小的元素 //如找到,则赋值给small for(j=i+1;j<n;j++) { if(ai[j] < ai[small]) small=j; } //找到最小元素后,与参考值比较 //如small=i,则可说明i是整个未排序列中最小的,无需交换 //如small!=i,则说明small比i更小,则需交换 if(small != i) { temp=ai[i]; ai[i]=ai[small]; ai[small]=temp; } } } /* 选择排序的基本思想: 将序列看成两个部分,已排序部分和未排序部分。选择未排序部分的首元素作为参考值。 使用 参考值 与 参考值其后序列中最小的元素 比较,并按需交换。这样,可以找到未排序部分的最小元素。 如此反复,直到未排序部分只剩一个元素,即可。 */ int main() { //测试框架 const int numbers=6; int input[numbers]={5,4,3,2,1,0}; int num=0; SelectSort(input,numbers); while(num <numbers) { cout <<input[num]; num++; } cout <<endl; return 0; }

你可能感兴趣的:(算法,框架,测试,存储,input,Numbers)