例题1:
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
插入排序:
题目代码:
#include<iostream>
using namespace std;
void Sort(int *a,int n)
{ //插入排序
int i,j,temp,k;
for(i=1;i<n;i++)
{
temp = a[i];
for(j=i-1;j>=0&&a[j]>temp;j--)
{
a[j+1] = a[j];
}
a[j+1] = temp;
}
}
int main()
{
int n,*a;
cin>>n;
a = new int[n];
for(int i=0;i<n;i++)
{
cin>>*(a+i);
}
Sort(a,n);
for(int i=0;i<n;i++)
{
cout<<*(a+i)<<" ";
}
delete [] a;
}
例题2:
冒泡排序:
输入一个随机数组,按照升序的方式进行输出
#include <iostream>
using namespace std;
void sort(int * num)
{
int i, j = 0;
for (i = 0; i <= 9; ++i)
{
for (j = 0; j < 10 - 1 - i; j++)
{
if (num[j] > num[j + 1])
{
int temp;
temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
}
}
}
int main()
{
int number_[10] = { 0 };
for (int i = 0; i < 10; i++)
{
cin >> number_[i];
}
sort(number_);
for (int i = 0; i < 10; i++)
{
cout << number_[i] << endl;
}
return 0;
}
例题3:
归并算法:(效率最高)
#include <iostream>
using namespace std;
void mergearray(int *a, int first, int mid, int last, int temp[])
{
int i = first;
int j = mid + 1;
int m = mid;
int n = last;
int k = 0;
while (i <= m && j <= n)
{
if (a[i] <= a[j])
{
temp[k++] = a[i++];
}
else
{
temp[k++] = a[j++];
}
}
while (i <= m)
{
temp[k++] = a[i++];
}
while (j <= n)
{
temp[k++] = a[j++];
}
for (i = 0; i < k; i++)
{
a[first + i] = temp[i];
}
}
void mergesort(int *a, int first, int last, int temp[])
{
if (first < last)
{
int mid = (first + last) / 2;
mergesort(a, first, mid, temp);
mergesort(a, mid+1, last, temp);
mergearray(a, first, mid, last, temp);
}
}
bool MergeSort(int *a, int n)
{
int p[10] = { 0 };
if (p == NULL)
{
return false;
}
mergesort(a, 0, n - 1, p);
for (int i = 0; i < 10; i++)
{
cout << p[i] << endl;
}
return true;
}
int main()
{
int a[10] = { 10,4,5,1,3,7,8,3,7,9 };
MergeSort(a, 10);
return 0;
}
例题4:
快速排序:
#include <iostream>
using namespace std;
void quick_sort(int *s, int l, int r)
{
if (l < r)
{
int i = l;
int j = r;
int x = s[l];
while (i < j)
{
while (i < j && s[j] >= x)
{
j--;
}
if (i < j)
{
s[i++] = s[j];
}
while (i < j && s[i] < x)
{
i++;
}
if (i < j)
{
s[j--] = s[i];
}
}
s[i] = x;
quick_sort(s, l, i - 1);
quick_sort(s, i + 1, r);
}
}
int main()
{
int a[5] = { 5,4,3,2,1 };
quick_sort(a, 0, 4);
for (int i = 0; i < 5; i++)
{
cout << a[i] << endl;
}
}