C++の4つの古典的なソート
1538 ワード
1、泡立ちソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(n^2)空間複雑度:O(1)安定
2、選択ソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(n^2)空間複雑度:O(1)不安定
3、挿入ソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(n^2)空間複雑度:O(1)安定
4、高速ソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(nlogn)空間複雑度:O(nlogn)不安定度
void bubbleSort(vector& nums)
{
for(int i=0; inums[j+1])
{
num[j] = nums[j] + nums[j+1];
nums[j+1] = nums[j] -nums[j+1];
nums[j] = nums[j] -nums[j+1];
}
}
}
}
2、選択ソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(n^2)空間複雑度:O(1)不安定
void selectSort(vector& nums)
{
for(int i=0; i nums[index])
index = j;
}
nums[index] = nums[index] + nums[nums.size()-i-1];
nums[nums.size()-i-1] = nums[index] - nums[nums.size()-i-1];
nums[index] = nums[index] - nums[nums.size()-i-1];
}
}
3、挿入ソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(n^2)空間複雑度:O(1)安定
void insertSort(vector& nums)
{
for(int i=1; i0; --j)
{
if(current
4、高速ソート/[3,1,4,2,5]小さい時から大きい時まで複雑度:O(nlogn)空間複雑度:O(nlogn)不安定度
void quickSort(vector& nums, int left, int right)
{
if(left >= right)
return;
int i=left;
int j=right;
int base=nums[left];
while(i= base)
j--;
while(i