#define Size 5
int main()
{
int a[Size];
for (int i = 0; i < Size;i++)
{
cin >> a[i];
}
for (int i = 1; i < Size; i++)
{
for (int j = 0; j < Size - i; j++)
{
if (a[j] < a[j + 1])
{
a[j] = a[j] ^ a[j + 1];
a[j + 1] = a[j] ^ a[j + 1];
a[j] = a[j] ^ a[j + 1];
}
}
}
for (int i = 0; i < Size; i++)
{
cout << a[i] << endl;
}
return 0;
}
for (int i = 1; i <= 4;i++)
{
for (int j = i;j > 0;j--)
{
if (n[j] >= n[j - 1])
{
break;
}
else
{
n[j] = n[j] ^ n[j - 1];
n[j - 1] = n[j] ^ n[j - 1];
n[j] = n[j] ^ n[j - 1];
}
}
cout << "第" << i << "轮排序后的结果" << endl;
for (int i = 0; i < 5; i++)
{
cout << n[i] << '\t';
}
cout << endl;
}
void selectSort(int* n,int size)
{
for(int i = 0;i < size - 1;i++)
{
int k = i;
for(int j = i+1;j < size;j++)
{
if(n[j]<n[k])
{
k = j;
}
}
if(i != k)
{
swap(n[i],n[k]);
}
}
}
规则:对于序列,第一轮选择当前序列最小的元素,与第一个元素进行交换
第二轮找剩下的序列中最小的元素,与第二个进行交换
第n-1轮,排序结束
4 9 5 2 0
第一轮 0 9 5 2 4
第二轮 0 2 5 9 4
第三轮 0 2 4 9 5
第四轮 0 2 4 5 9
void quickSort(int* n,int start,int end)
{
if(start>=end)
return;
int temp = n[start],i = start,j = end;
while(i<j)
{
while(i<j && n[j] >= temp)
{
j--;
}
n[i] = n[j];
while(i < j && n[i] <= temp)
{
i++;
}
n[j] = n[i];
}
n[i] = temp;
quickSort(n,start,i-1);
quickSort(n,i+1,end);
}
规则:对于序列,选择一个基准数(一般选择第一个),左边都是不大于基准数的数,右边都是不小于基准数的数,继续对基准数两边的序列进行快排
(t = 4) 4 9 5 2 0 n[j]<4,n[i] = n[j]
i j
0 9 5 2 0
i j
0 9 5 2 9
i j
0 2 5 2 9
i j
0 2 5 5 9
ij
0 2 4 5 9
[再快排] ^ [再快排]