从数组中选择最小的数字,将它与第一个数字交换位置;再从剩下的数字中选择最小的数字,将其与第二个数字交换位置。不断进行这样的操作,直到排序完毕。
cpp:
#include <iostream>
#include <vector>
using namespace std;
void selectsort(vector<int> &nums)
{
for (int i = 0; i < nums.size(); i++)
{
// temp存放从 i~最后一位 最小数的下标
int temp = i;
for (int j = i + 1; j < nums.size(); j++)
{
if (nums[j] < nums[temp])
{
temp = j;
}
}
// temp与i交换
int cur = nums[i];
nums[i] = nums[temp];
nums[temp] = cur;
}
}
int main()
{
vector<int> nums = {23, 4, 54, 45, 53, 45, 98, 84, 98, 36, 47, 9, 0, 23};
cout << "The nums:" << endl;
for (int i = 0; i < nums.size(); i++)
{
cout << nums[i] << " ";
}
cout << endl;
selectsort(nums);
cout << "After sorting:" << endl;
for (int i = 0; i < nums.size(); i++)
{
cout << nums[i] << " ";
}
cout << endl;
system("pause");
return 0;
}
python:
import numpy
def Selectsort(nums):
for i in range(len(nums)):
temp = i
for j in range(i+1,len(nums)):
if nums[j] < nums[temp]:
temp = j
nums[i],nums[temp] = nums[temp],nums[i]
return nums
if __name__ == "__main__":
nums = numpy.random.randint(0,100,10)
print(nums)
ans = Selectsort(nums)
print(ans)