数组内排序方法——直接选择排序、快速排序、插入排序

直接选择排序

直接选择排序 :在未排序的元素中选出最小的元素,然后和未排序的首元素进行交换 ,直到所有元素 排序完成 。

#include 
#include 
using namespace std;
void sort(int a[],int size) ;//设置一个函数,将尺寸为size的数组a[]中的元素按照大小排列
int main()
{
	int b[]={3,5,2,1,7,9,6};
	int size=sizeof(b)/sizeof(int);
	sort( b, size);//不要带数据类型 
	cout<<"输出排列后的数组元素"<

快速排序法

#include  
    using namespace std;  
    void quickSort(int a[],int,int);  
    int main()  
    {  
        int array[]={34,65,12,43,67,5,78,10,3,70},k;  
        int len=sizeof(array)/sizeof(int);  
        cout<<"The orginal arrayare:"<= x)         
                   j--;   
    /*从右向左找第一个小于x的数 ,如果循环语句只有一句,大括号可以省略,直到不满足循环条件再继续运行下一句*/
                if(i < j)  
                    s[i++] = s[j];
/*终于搞懂了!!i++是先用i用完再把i+1,先把s[j]值赋值给s[i],运行完i再加1(因为下一个从左到右寻找最大值就要从i+1位开始寻找了)语句可以拆分为s[i] = s[j];i++; */
                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);  
        }  
    }  

思路:(1)首先选择数组其中y位作为索引记为K,这样这一位的值被暂存到X内,然后array[y]就变成空位了。
(2)记i=left,j=right,一般j是最后一位,运行此步骤要保证数组元素要大于2个,即i (3)经过第二步,左边都是小于索引值,右边都是大于索引值,然后将左边再变成下一个区间,重复第一步和第二步。右边也同理。就这样重复调用函数,直到区间里就剩一个元素了即i=j那么顺序就排好了。

插叙排序法

思路:整个序列分为有序区和无序区,取第一个元素作为初始有序区,然后第二个开始,依次插入到有序区的合适位置,直到排好序。

void InsertSort(int arr[],int n)
{
    for (int i =1;i <= n;++i)
    {
        for(int j = i;j > 0;--j)
        {
            if(arr[j] < arr[j -1])
            {
                int temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
            }
        }
    }
}

这里面将总结了常用的排序法,并且还有动图表示,很形象

你可能感兴趣的:(c++)