排序算法
选择排序
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,i,j,a[2000];
bool t;
cin >>n;
for (i=1;i<=n;i++)
cin >>a[i];
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (a[i]>a[j])
swap(a[i],a[j]);
for (i=1;i<=n;i++)
cout <<a[i] <<" ";
return 0;
}
冒泡排序
#include<iostream>
using namespace std;
int main() {
int i;
int arr[8] = { 12,23,8,15,33,24,77,55};//初始化数组
for (int i = 0; i < 7;i++) {//一共循环10次
for (int j = 0; j < 7-i; j++) {//执行的次数依次递减
if (arr[j]>arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;//交换值
}
}
}
for (int j = 0; j < 8; j++)//打印数组
{
cout << arr[j] <<" ";
}
system("pause");
return 0;
}
插入排序
#include<iostream>
using namespace std;
int main() {
int i;
int arr[10] ;//初始化数组
for (i = 0; i < 8; i++)
{
cin >> arr[i];//输入10要排序的数
}
for (int i = 1; i < 8;i++) {//10个数循环9次
for (int j = i; j >0; j--) {//从第二个数开始与第一个数比较,小的插入到前面
if (arr[j-1]>arr[j]) {
int temp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = temp;//插到前面来(交换值)
}
}
}
for (int j = 0; j < 8; j++)//打印数组
{
cout << arr[j] << " ";
}
return 0;
}
快速排序
#include<iostream>
using namespace std;
void quickSort(int a[], int, int);//原型声明
int main()
{
int array[] = { 12,23,8,15,33,24,77,55},k;
int len = sizeof(array) / sizeof(int);//数组长度
//cout << len << endl;
for ( k = 0; k<len; k++)
cout << array[k] << " ";
cout << endl;
quickSort(array, 0, len - 1);
for (k = 0; k<len; k++)
cout << array[k] << " ";//打印数组
cout << endl;
return 0;
}
void quickSort(int s[], int l, int r)
{
if (l< r)
{
int i = l, j = r, x = s[l];
while (i < j)
{
while (i < j && s[j] >= x) // 从右向左找第一个小于x的数
j--;
if (i < j)
s[i++] = s[j];
while (i < j && s[i]< x) // 从左向右找第一个大于等于x的数
i++;
if (i < j)
s[j--] = s[i];
}
s[i] = x;
quickSort(s, l, i - 1); // 递归调用
quickSort(s, i + 1, r);
}
}