排序——冒泡,快速,选择,插入

Posted lijuanhu321

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序——冒泡,快速,选择,插入相关的知识,希望对你有一定的参考价值。

冒泡排序

 1 #include <iostream>
 2 #include<string>
 3 #include<cstring>
 4 
 5 
 6 using namespace std;
 7 void bubbleSort(int array[],int n)
 8 {
 9     for(int i=0;i<n;i++)
10     {
11         for(int j=0;j<n-i-1;j++)
12         {
13             if(array[j]>array[j+1])
14             {
15                 int temp =array[j];
16                 array[j]=array[j+1];
17                 array[j+1]=temp;
18             }
19         }
20         for(int k=0;k<n;k++) cout<<" "<<array[k];
21         cout<<endl;
22     }
23 }
24 int main()
25 {
26     int n;
27     cin>>n;
28     int a[1000];
29     for(int i=0;i<n;i++) cin>>a[i];
30     bubbleSort(a,n);
31     return 0;
32 }

 快速排序

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void quickSort(int array[],int left,int right)
 6 {
 7     int ltemp=left,rtemp=right;
 8     int f=array[(left+right)/2];
 9     while(ltemp<rtemp)
10     {
11         while(array[ltemp]<f) ++ltemp;
12         while(array[rtemp]>f) --rtemp;
13         if(ltemp<=rtemp)
14         {
15             int t=array[ltemp];
16             array[ltemp]=array[rtemp];
17             array[rtemp]=t;
18             --rtemp;
19             ++ltemp;
20         }
21     }
22     if(ltemp==rtemp) ltemp++;
23     if(left<rtemp) quickSort(array,left,ltemp-1);  //左半段排序
24     if(ltemp<right) quickSort(array,rtemp+1,right); //右半段排序
25 }
26 int main()
27 {
28     int n;
29     cin>>n;
30     int array[1000];
31     for(int i=0;i<n;i++) cin>>array[i];
32     //int array[] = { 4, 3, 2, 1, 9, 7, 5, 8, 6 };
33     //int size = sizeof(array) / sizeof(*array); //求数组长度
34     quickSort(array, 0, n - 1);
35     for (int i = 0; i < n; i++) cout << array[i] << " ";
36     return 0;
37 }

 选择排序

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void selectSort(int array[],int n)
 6 {
 7     int index, temp;
 8     for(int i=0;i<n;i++)
 9     {
10         index=i;
11         for(int j=i+1;j<n;j++)
12         {
13             if(array[j]<array[index])
14             {
15                 index=j;
16             }
17         }
18         temp=array[i];
19         array[i]=array[index];
20         array[index]=temp;
21         for(int k=0;k<n;k++) cout<<" "<<array[k];  //输出每一次排序
22         cout<<endl;
23     }
24 }
25 
26 int main()
27 {
28     int n;
29     cin>>n;
30     int a[n];
31     for(int i=0;i<n;i++) cin>>a[i];
32     selectSort(a,n);
33     return 0;
34 }

 插入排序

 1 #include <iostream>
 2 
 3 using namespace std;
 4 void insertSort(int array[],int n)
 5 {
 6     for(int i=1;i<n;i++)
 7     {
 8         for(int j=i;j>0;j--)
 9         {
10             if(array[j]<array[j-1])
11             {
12                 int temp=array[j];
13                 array[j]=array[j-1];
14                 array[j-1]=temp;
15             }
16         }
17         for(int k=0;k<n;k++) cout<<array[k]<<" ";
18         cout<<endl;
19     }
20 }
21 int main()
22 {
23     int n;
24     cin>>n;
25     int array[n];
26     for(int i=0;i<n;i++) cin>>array[i];
27     insertSort(array,n);
28     return 0;
29 }

 

以上是关于排序——冒泡,快速,选择,插入的主要内容,如果未能解决你的问题,请参考以下文章

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

四种排序算法实现

排序算法(冒泡,选择,插入,快速)查找算法(二分,快速)

几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)

图形化排序算法比较:快速排序插入排序选择排序冒泡排序

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)