冒泡排序,选择排序,快速排序算法以及比比效率
```cpp
#include<iostream>
#include<ctime>
#include<iomanip>
#include<cstdlib>
#include<cmath>
using namespace std;
int main()
{
int N;
cin >> N;
int* arr = new int[N];
srand(time(NULL));
int i, j; int temp;
clock_t start, end;//clock_t为CPU始终计时单元数
for (i = 0; i < N; i++)
{ arr[i] = rand() % 1000; }//由于输出要排的数和排好的数要挺久的,如果要排的数很多那就要排很久,仅仅比效率的话先输出时间 //for (i = 0; i < N; i++)
//{
// cout << arr[i] << " ";
//}
start = clock();//获取CPU此时的时间单元数
for (i = 0; i < N - 1; i++)//因为是两个数之间交换交换轮数只用是比数字个数-1次,可以看成是两个数间空格的个数
{
for (j = 0; j < (N - 1) - i; j++)//每轮里面的比较为比较没排好的数,所以只需要循环到N-1-i
{ if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp; }
}
}
end = clock();//获取结束时的CPU时间单元数
//for (i = 0; i < N; i++)
//{
// cout << arr[i] << " ";
//}
cout << endl;
cout << "using time:" << fixed << setprecision(5) << double(end - start) / CLOCKS_PER_SEC << endl;
return 0;
}
```cpp
#include<iostream>
#include<cmath>
#include<ctime>
#include<iomanip>
#include<cstdlib>
using namespace std;
int main()
{
clock_t start, end;
int N;
cin >> N;
int* arr = new int[N];
int i, j;
int k;//找一个标志来作为交换的判断条件 int min;//定义一个min来存储数组中比第一个数小的数来找到最小的那个数 srand(time(NULL));
for (i = 0; i < N; i++)
{ arr[i] = rand() % 1000; } //for(i=0;i<N;i++)
//{
// cout<<arr[i]<<" ";
//}
cout << endl; start = clock();//获取时间 for (i = 0; i < N; i++)
{ k = i;
min = arr[i];//让排序开始的第一个数为min,以便后面不断比大小
for (j = i; j <N; j++)
{
if (arr[j] < min)
{ k = j;//当出现了符合条件的一个arr[j],就用k标志这个j,下面交换的时候才用得上
min = arr[j]; }
}
if (k != i)//要是要交换就是出现了符合条件的才交换,否则上面没出现要的东西也交换?
{
arr[k] = arr[i];
arr[i] = min;//交换,这里的min与arr[k],arr[j]没区别,但是由于arr[k]已经交换,所以要用min来当中间变量
}
}
end = clock();
//for (i = 0; i < N; i++)
//{
// cout << arr[i] << " ";
//}
cout << endl;
cout << "using time:" << fixed << setprecision(5) << double(end - start) / CLOCKS_PER_SEC << endl;
return 0;
}
# include <iostream>
# include <cmath>
# include <ctime>
# include <iomanip>
# include <cstdlib>
using namespace std;
void quicksort ( int arr[ ] , int low, int high)
{ int i, j;
int key;
int temp;
int origin;
if ( low < high)
{ i = low;
j = high;
key = arr[ low] ;
while ( i < j)
{
while ( i < j && arr[ j] >= key)
{ j-- ; }
while ( i < j && arr[ i] <= key)
{ i++ ; }
temp = arr[ i] ;
arr[ i] = arr[ j] ;
arr[ j] = temp;
}
origin = arr[ i] ;
arr[ i] = arr[ low] ;
arr[ low] = origin;
quicksort ( arr, low, i - 1 ) ;
quicksort ( arr, i + 1 , high) ;
else
return ; }
int main ( )
{
clock_t start, end;
int N;
cin >> N;
int * arr = new int [ N] ;
srand ( time ( NULL ) ) ;
int low = 0 , high = N - 1 ;
for ( int i = 0 ; i < N; i++ )
{ arr[ i] = rand ( ) % 1000 ; }
start = clock ( ) ;
quicksort ( arr, low, high) ;
end = clock ( ) ;
cout << endl << "using time:" << fixed << setprecision ( 5 ) << double ( end - start) / CLOCKS_PER_SEC << endl;
return 0 ; }